Хөгжүүлэгч

    NameSpace API

    Домэйн хайх, бүртгэх, DNS удирдах, нэхэмжлэх төлөх, өөрчлөлтийг webhook-оор авах. Апп дээр хийдэг бүхнээ кодоор.

    Үндсэн хаягhttps://api.ns.mn/v1

    Эхлэх

    3 алхмаар эхэл

    Test түлхүүрээр бодит өгөгдөл дээр төлбөргүй туршаад, бэлэн болмогц Live руу шилжинэ.

    1. 1Түлхүүр үүсгэ

      Багийн Тохиргоо, Хөгжүүлэгч хэсэгт түлхүүр үүсгэж, эрхийг нь сонгоно. Нууц утгыг нэг л удаа харуулна.

    2. 2Sandbox-д турш

      ns_test_ түлхүүр бодит өгөгдлийг уншина. Бичих хүсэлтийг шалгаж, үнэлдэг ч хадгалахгүй, төлбөр авахгүй.

    3. 3Live руу шилж

      ns_live_ түлхүүр үүсгэж, худалдан авах бол өдрийн зарцуулалтын хязгаараа тохируулна.

    Хүсэлт
    # shop.mn чөлөөтэй эсэхийг шалгах
    curl "https://api.ns.mn/v1/register/search?q=shop.mn" \
      -H "Authorization: Bearer ns_test_••••7Q2M" \
      -H "Accept-Language: mn"
    Хариу
    {
      "status": 200,
      "data": {
        "exact": {
          "name": "shop.mn",
          "status": "available",
          "statusLabel": "Чөлөөтэй",
          "price": { "years": 1, "amount": 89000, "amountLabel": "89,000₮" }
        },
        "others": [ ... ]
      }
    }
    Түлхүүр

    Түлхүүр ба орчин

    Түлхүүр бүр нэг багт харьяалагдаж, зөвхөн https://api.ns.mn/v1 дээр ажиллана. Аппын нэвтрэлт энд ажиллахгүй.

    • Live ба Test: ns_live_ бодит үйлдэл хийнэ. ns_test_ нь dry run: бичих хүсэлт хадгалагдахгүй, төлбөр, мэдэгдэл явахгүй, хариунд sandbox: true.
    • Нэг удаа харуулна. Нууц утгыг зөвхөн үүсгэх үед харуулна. Бид зөвхөн hash болон сүүлийн 4 тэмдэгтийг хадгална.
    • Шинэчлэх: ижил тохиргоотой шинэ түлхүүр үүснэ. Хуучин нь 24 цаг ажилласаар байх тул deploy-оо амжиж солино.
    • Хязгаарлалт: тодорхой домэйнүүд, IP allowlist (20 хүртэл), хугацаа (90 хоног, 1 жил эсвэл хугацаагүй).
    • Багийн түлхүүр: үүсгэсэн гишүүн багаас гарсан ч ажилласаар. Хэзээ ч цуцалж болно.
    Эрх

    Хамгийн бага эрх

    Хэсэг бүрт Хаалттай, Унших, Бичих гэсэн түвшний аль нэгийг сонгоно. Хэрэгтэй эрхийг л өгнө үү.

    ХэсэгТүвшинБичих эрхээр
    ДомэйнХаалттайУншихБичихБүртгэх, сунгах, тохиргоо өөрчлөх
    DNSХаалттайУншихБичихБичлэг, nameserver өөрчлөх
    ШилжүүлэгХаалттайУншихБичихAuth код, оруулах, гаргах
    ТөлбөрХаалттайУншихБичихНэхэмжлэх төлөх
    БагХаалттайУншихЗөвхөн унших боломжтой

    Гишүүн түлхүүрт өөрийн эрхээс илүү эрх өгөх боломжгүй. Унших эрхтэй шилжүүлэг Auth кодыг харуулдгийг анхаарна уу.

    Хязгаар

    Зарцуулалт ба хүсэлтийн хязгаар

    Түлхүүр алдагдсан ч хохирол хязгаартай байхаар тохируулсан.

    Өдрийн зарцуулалтын хязгаар

    Домэйн эсвэл Төлбөр бичих эрхтэй түлхүүрт заавал. Зөвхөн хэтэвчээс төлнө. Хязгаар хэтэрвэл 402 алдаа буцна.

    Минутад 600 хүсэлт

    Түлхүүр бүрээр тоолно. Хэтэрвэл 429 алдаа, details.retryAfter-д хэдэн секунд хүлээхийг заана.

    Хэрэглээ ба бүртгэл

    Түлхүүр бүрийн сарын хүсэлт, алдааны тоо харагдана. Түлхүүрийн хийсэн өөрчлөлт түүний нэрээр үйл ажиллагааны бүртгэлд үлдэнэ.

    Хариу

    Нэг хэлбэрийн хариу

    Хариу бүр JSON бөгөөд status талбартай. Алдааны мессежийг хэрэглэгчдээ шууд харуулж болно.

    • Үргэлж HTTP 200: амжилттай бол {status, data}, алдаа бол {status, error, details}. status нь HTTP кодын утгатай.
    • Хэл: Accept-Language: mn эсвэл en толгойгоор алдаа, тайлбарын хэл солигдоно.
    • Жагсаалт: page, limit параметртэй. Хариу нь {items, total, page, limit, from, to}.
    Алдааны жишээ
    # Өдрийн хязгаар хэтэрсэн худалдан авалт
    {
      "status": 402,
      "error": "Өдрийн зардлын хязгаар хэтэрнэ. Хязгаар 500,000₮, өнөөдөр 480,000₮ зарцуулсан",
      "details": {
        "code": "spend_cap",
        "cap": 500000,
        "spentToday": 480000,
        "required": 89000,
        "left": 20000
      }
    }
    Endpoint

    Гол endpoint-ууд

    Апп дээрх бүх үйлдэл ижил замаар /v1 дор байна. Доорх нь хамгийн их хэрэглэгддэг нь.

    Хайлт ба бүртгэл

    • GET/tldsӨргөтгөлүүд, үнийн хамт
    • GET/register/search?q=shop.mnНэр чөлөөтэй эсэх, үнэ, хувилбарууд
    • POST/register/bulk100 хүртэл нэрийг нэг дор шалгах
    • POST/cart/itemsДомэйн сагсанд нэмэх
    • POST/cart/checkoutСагсыг хэтэвчээс төлж бүртгэх

    Домэйн

    • GET/domainsБагийн домэйнүүд, хуудаслалттай
    • GET/domains/:domainНэг домэйны мэдээлэл, төлөв
    • PUT/domains/:domain/auto-renewАвто сунгалт асаах, унтраах
    • PUT/domains/:domain/lockRegistrar lock асаах, унтраах
    • GET/domains/:domain/auth-codeШилжүүлэх Auth код авах

    DNS

    • GET/dns/:domain/recordsDNS бичлэгүүд
    • POST/dns/:domain/recordsБичлэг нэмэх
    • PUT/dns/:domain/records/:idБичлэг засах
    • DELETE/dns/:domain/records/:idБичлэг устгах
    • PUT/dns/:domain/nameserversNameserver солих (шалгасны дараа)

    Шилжүүлэг

    • POST/transfers/in/checkДомэйн, Auth кодыг шалгах
    • POST/transfers/inШилжүүлж оруулах
    • GET/transfers/outГаргах хүсэлтүүд
    • POST/transfers/:id/approveГаргах хүсэлт зөвшөөрөх

    Төлбөр

    • GET/billing/invoicesНэхэмжлэхүүд, төлөвөөр
    • POST/billing/invoices/:id/payНэхэмжлэх төлөх
    • POST/billing/renewalsДомэйн сунгах
    • GET/billing/walletХэтэвчийн үлдэгдэл
    Webhook

    Өөрчлөлтийг шууд мэд

    Домэйн, төлбөр, шилжүүлэг, DNS-д өөрчлөлт гарахад таны https endpoint руу POST илгээнэ. Багт 10 хүртэл endpoint.

    • Гарын үсэгтэй: NS-Signature толгойд t (unix секунд), v1 хоёр байна. v1 нь t, цэг, body-г залгасан мөрийн HMAC-SHA256 (hex), signing secret (whsec_)-ээр.
    • 5 минут: timestamp нь 5 минутаас хуучин хүсэлтийг хүлээж авахгүй байна уу.
    • Давтан илгээнэ: 10 секундэд 2xx ирэхгүй бол 1, 10, 60 минутын дараа дахин. Дараа нь endpoint-ийг алдаатай гэж тэмдэглэж, багт мэдэгдэнэ.
    • Аюулгүй хаяг: зөвхөн https. Дотоод сүлжээ рүү хэзээ ч илгээхгүй, redirect дагахгүй.
    Хүсэлтийн жишээ
    NS-Event: domain.expiring
    NS-Delivery: 7b1c...
    NS-Signature: t=1762840800,v1=5f2c...
    
    {
      "id": "evt_4f9a2c1e7b3d8a6f0e5c9b21",
      "type": "domain.expiring",
      "createdAt": "2026-11-07T02:00:00.000Z",
      "teamId": "3f6c2a1e-...",
      "data": {
        "domain": { "name": "shop.mn" },
        "expiresAt": "2026-11-21T00:00:00.000Z",
        "daysLeft": 14,
        "autoRenew": true
      }
    }
    Гарын үсэг шалгах (Node.js)
    import crypto from 'node:crypto'
    
    // header: NS-Signature, rawBody: задлаагүй body
    function verify(header, rawBody, secret) {
      const parts = header.split(',').map((p) => p.split('='))
      const { t, v1 } = Object.fromEntries(parts)
      if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false
      const expected = crypto.createHmac('sha256', secret)
        .update(`${t}.${rawBody}`).digest('hex')
      return v1?.length === expected.length &&
        crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected))
    }
    Webhook үйл явдлууд
    Үйл явдалХэзээ
    domain.registeredДомэйн бүртгэгдсэн
    domain.renewedДомэйн сунгагдсан
    domain.expiringДуусахад 30, 14, 7, 1, 0 хоног үлдсэн
    domain.expiredДомэйны хугацаа дууссан
    domain.autorenew_failedАвто сунгалт амжилтгүй болсон
    invoice.paidНэхэмжлэх төлөгдсөн
    transfer.requestedДомэйн гаргах хүсэлт ирсэн
    transfer.completedШилжүүлэг дууссан
    transfer.failedШилжүүлэг амжилтгүй болсон
    dns.changedDNS өөрчлөгдсөн

    Төлбөрийн үйл явдлыг зөвхөн төлбөр харах эрхтэй гишүүн захиална. Test түлхүүрийн хүсэлт webhook илгээхгүй.

    Түлхүүрээ үүсгээд эхэл

    Test түлхүүр төлбөргүй. Эрх, хязгаараа өөрөө тохируулна.