Compiler
Dashboard Tester Joblar Tokenlar API Docs

Parolni o'zgartirish

Kirish

Umumiy ma'lumot Autentifikatsiya Base URL

Kod bajarish

POST /execute WS /connect GET /runtimes

Checker

POST /check POST /check/demo Checker yozish

Paketlar

GET /packages POST /packages DELETE /packages

Joblar

GET /jobs GET /jobs/:id DELETE /jobs/:id DELETE /jobs (bulk)

Auth

POST /auth/login POST /auth/logout GET /auth/me POST /auth/tokens GET /auth/tokens DELETE /auth/tokens/:token GET /auth/users POST /auth/users PUT /auth/users/:username DELETE /auth/users/:username PUT /auth/profile

Xatolar

HTTP kodlar

Compiler API Hujjatlari

Bu API orqali 20+ dasturlash tilida kodni bajarish mumkin. Barcha so'rovlar uchun Bearer token talab qilinadi.

Tez bajarish

HTTP POST bilan bir necha millisekund ichida natija

Real-time WebSocket

stdout/stderr oqimini jonli kuzating

Xavfsiz sandbox

Har bir kod alohida izolyatsiyada ishlaydi

Autentifikatsiya

Barcha himoyalangan endpointlar uchun Authorization yoki X-Auth-Token sarlavhasi talab qilinadi.

HTTP sarlavha

Authorization: Bearer <token>
X-Auth-Token: <token>

Token olish

Token olish uchun POST /auth/login ga username va password yuboring, yoki Dashboard → Tokenlar sahifasidan yangi API token yarating.

Base URL

http://your-server:2000

Barcha endpoint'lar shu manzilga nisbatan ko'rsatilgan.

POST /api/v2/execute Token kerak

Kodni serverda izolyatsiyalangan muhitda bajaradi va natijani qaytaradi.

So'rov tanasi (Request Body)

Maydon Tur Majburiy Tavsif
languagestringHaDasturlash tili nomi (masalan: "python", "javascript")
versionstringHaTil versiyasi (masalan: "3.12.0"). Wildcard: "*"
filesarrayHaFayl ob'ektlari ro'yxati (kamida bitta, content maydoni bilan)
files[].namestringYo'qFayl nomi (ko'rsatilmasa default nom ishlatiladi)
files[].contentstringHaFayl tarkibi (kod matni)
files[].encodingstringYo'q"utf8" (default) yoki "base64"
stdinstringYo'qDasturga beriluvchi standart kirish ma'lumoti
argsarrayYo'qBuyruq qatori argumentlari (string ro'yxat)
run_timeoutnumberYo'qBajarish vaqt chegarasi (millisekund)
run_memory_limitnumberYo'qXotira chegarasi (bayt)
compile_timeoutnumberYo'qKompilyatsiya vaqt chegarasi (millisekund)

Javob (Response)

Maydon Tavsif
languageBajarilgan tilning nomi
versionBajarilgan versiya
run.stdoutDastur chiqargan matn (stdout)
run.stderrXato chiqishi (stderr)
run.codeChiqish kodi (0 = muvaffaqiyat)
run.timeBajarish vaqti (millisekund, string)
run.memoryIshlatilgan xotira (KB, string)
run.status"ok", "timed_out", "memory_limit"
compileKompilyatsiya bosqichi ma'lumotlari (agar mavjud bo'lsa)
curl -X POST https://your-server:2000/api/v2/execute \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "language": "python",
    "version": "*",
    "files": [
      {
        "name": "main.py",
        "content": "name = input()\nprint(f\"Salom, {name}!\")"
      }
    ],
    "stdin": "Dunyo"
  }'
const response = await fetch('https://your-server:2000/api/v2/execute', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    language: 'python',
    version: '*',
    files: [
      {
        name: 'main.py',
        content: 'name = input()\nprint(f"Salom, {name}!")',
      },
    ],
    stdin: 'Dunyo',
  }),
});

const result = await response.json();
console.log(result.run.stdout);
import requests

response = requests.post(
    'https://your-server:2000/api/v2/execute',
    headers={
        'Authorization': 'Bearer YOUR_TOKEN',
        'Content-Type': 'application/json',
    },
    json={
        'language': 'python',
        'version': '*',
        'files': [
            {
                'name': 'main.py',
                'content': 'name = input()\nprint(f"Salom, {name}!")',
            }
        ],
        'stdin': 'Dunyo',
    }
)

result = response.json()
print(result['run']['stdout'])
{
  "language": "python",
  "version": "3.12.0",
  "run": {
    "stdout": "Salom, Dunyo!\n",
    "stderr": "",
    "output": "Salom, Dunyo!\n",
    "code": 0,
    "signal": null,
    "message": null,
    "status": "ok",
    "time": "38",
    "cpu_time": "18",
    "memory": "9"
  }
}
WS /api/v2/connect Token kerak

WebSocket orqali kodni real-time rejimda bajaradi. stdout/stderr oqimini darhol ko'rish imkonini beradi.

Ulanish URL

ws://your-server:2000/api/v2/connect?authorization=Bearer%20YOUR_TOKEN

Xabar turlari (Client → Server)

type: "init" — Kodni boshlash

{
  "type": "init",
  "language": "python",
  "version": "*",
  "files": [{ "content": "print(input())" }],
  "stdin": "",
  "run_timeout": 10000
}

type: "data" — stdin ma'lumoti yuborish

{ "type": "data", "stream": "stdin", "data": "Salom\n" }

type: "signal" — Signal yuborish

{ "type": "signal", "signal": "SIGKILL" }

Xabar turlari (Server → Client)

type: "runtime" — Runtime tayyor

{ "type": "runtime", "language": "python", "version": "3.12.0" }

type: "data" — stdout/stderr oqimi

{ "type": "data", "stream": "stdout", "data": "Chiqish matni\n" }

type: "stage" — Bosqich o'zgardi (compile → run)

{ "type": "stage", "stage": "run" }

type: "exit" — Bajarilish tugadi

{ "type": "exit", "stage": "run", "code": 0, "signal": null, "status": "ok" }
const token = 'YOUR_TOKEN';
const ws = new WebSocket(
  `ws://your-server:2000/api/v2/connect`,
  [],
);

ws.onopen = () => {
  ws.send(JSON.stringify({
    type: 'init',
    language: 'python',
    version: '*',
    files: [{ content: 'print(input("Ism: "))' }],
  }));
};

ws.onmessage = (e) => {
  const msg = JSON.parse(e.data);
  if (msg.type === 'runtime') {
    ws.send(JSON.stringify({ type: 'data', stream: 'stdin', data: 'Ali\n' }));
  }
  if (msg.type === 'data') {
    process.stdout.write(msg.data);
  }
  if (msg.type === 'exit') {
    console.log('Tugadi, kod:', msg.code);
  }
};

ws.onerror = (e) => console.error('WS xato:', e.message);
import json
import websocket

def on_open(ws):
    ws.send(json.dumps({
        'type': 'init',
        'language': 'python',
        'version': '*',
        'files': [{'content': 'print(input("Ism: "))'}],
    }))

def on_message(ws, message):
    msg = json.loads(message)
    if msg['type'] == 'runtime':
        ws.send(json.dumps({'type': 'data', 'stream': 'stdin', 'data': 'Ali\n'}))
    elif msg['type'] == 'data':
        print(msg['data'], end='', flush=True)
    elif msg['type'] == 'exit':
        print(f"\nTugadi, kod: {msg['code']}")
        ws.close()

ws = websocket.WebSocketApp(
    'ws://your-server:2000/api/v2/connect',
    header={'Authorization': 'Bearer YOUR_TOKEN'},
    on_open=on_open,
    on_message=on_message,
)
ws.run_forever()
GET /api/v2/runtimes Ochiq

O'rnatilgan runtimelar ro'yxatini qaytaradi. Token talab qilinmaydi.

curl https://your-server:2000/api/v2/runtimes
[
  {
    "language": "python",
    "version": "3.12.0",
    "aliases": ["py", "py3", "python3"],
    "runtime": null
  },
  {
    "language": "javascript",
    "version": "20.11.1",
    "aliases": ["node", "nodejs", "js"],
    "runtime": "node"
  }
]
POST /api/v2/check Token kerak

Kodni bajaradi, natijani checker orqali tekshiradi va hukm (verdict) qaytaradi. Online Judge tizimlarida test caseni baholash uchun ishlatiladi.

So'rov tanasi (Request Body)

Maydon Tur Majburiy Tavsif
languagestringHaTekshiriladigan koding dasturlash tili
versionstringHaTil versiyasi. Wildcard: "*"
filesarrayHaFoydalanuvchi kodi (kamida bitta fayl, content maydoni bilan)
expected_outputstringHaMuallif javobi — checker answer.txt sifatida o'qiydi
stdinstringYo'qKiruvchi ma'lumot (stdin). Checker input.txt sifatida o'qiydi
comparatorstringYo'qTaqqoslash usuli: case_insensitive (default) · default · any_of · program
checker_typestringYo'qChecker turi: default (oddiy) · interactive (real vaqtli suhbat)
checkerstringYo'qPython checker kodi (comparator=program yoki checker_type=interactive bilan)
validatorobjectYo'qKod matni tahlili: ban_loops, ban_keywords, max_chars, max_lines, ban_operators, require_operators, custom_code
run_timeoutnumberYo'qBajarish vaqt chegarasi (millisekund)
run_memory_limitnumberYo'qXotira chegarasi (bayt)
compile_timeoutnumberYo'qKompilyatsiya vaqt chegarasi (millisekund)

Javob (Response)

Maydon Tavsif
languageBajarilgan til
versionBajarilgan versiya
verdictAC · WA · PE · TL · ML · CE · RE · OL
checker_exitChecker dasturining chiqish kodi (raqam); CE/TL/RE holatda null
validator_failedValidator shartlari bajarilmasa true; aks holda mavjud emas
runFoydalanuvchi kodining bajarilish ma'lumotlari (stdout, stderr, time, memory…)
compileKompilyatsiya bosqichi (agar til kompilyatsiya talab qilsa)

Verdict qiymatlari

Verdict To'liq nomi Sabab
ACAcceptedChecker exit(0xAC) (172) qaytardi — javob to'g'ri
WAWrong AnswerChecker exit(0xAD) (173) qaytardi yoki noma'lum kod
PEPresentation ErrorChecker exit(0xAE) (174) qaytardi — format xatosi
TLTime LimitKod vaqt limitidan oshdi yoki checker exit(0xAF) (175) qaytardi
MLMemory LimitChecker exit(0xB0) (176) qaytardi — xotira chegarasi
CECompile ErrorKompilyatsiya muvaffaqiyatsiz tugadi
RERuntime ErrorKod bajarilishda xatolik (segfault, exception, nol bo'lmagan chiqish kodi)
OLOutput LimitChiqish hajmi limitidan oshdi
curl -X POST https://your-server:2000/api/v2/check \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "language": "python",
    "version": "*",
    "files": [
      { "content": "a, b = map(int, input().split())\nprint(a + b)" }
    ],
    "stdin": "3 5",
    "expected_output": "8\n"
  }'
const response = await fetch('https://your-server:2000/api/v2/check', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    language: 'python',
    version: '*',
    files: [{ content: 'a, b = map(int, input().split())\nprint(a + b)' }],
    stdin: '3 5',
    expected_output: '8\n',
  }),
});

const result = await response.json();
console.log(result.verdict); // "AC"
import requests

response = requests.post(
    'https://your-server:2000/api/v2/check',
    headers={
        'Authorization': 'Bearer YOUR_TOKEN',
        'Content-Type': 'application/json',
    },
    json={
        'language': 'python',
        'version': '*',
        'files': [{'content': 'a, b = map(int, input().split())\nprint(a + b)'}],
        'stdin': '3 5',
        'expected_output': '8\n',
    }
)

result = response.json()
print(result['verdict'])  # AC
{
  "language": "python",
  "version": "3.12.0",
  "verdict": "AC",
  "checker_exit": 172,
  "run": {
    "stdout": "8\n",
    "stderr": "",
    "code": 0,
    "signal": null,
    "status": null,
    "time": "42",
    "memory": "9"
  }
}
POST /api/v2/check/demo Ochiq

/check bilan bir xil, lekin token talab qilinmaydi. Resurs cheklovi avtomatik qo'llanadi:

run_timeout ≤ 5 000 ms
compile_timeout ≤ 8 000 ms
run_memory_limit ≤ 67 108 864 bayt (64 MB)
curl -X POST https://your-server:2000/api/v2/check/demo \
  -H "Content-Type: application/json" \
  -d '{
    "language": "cpp",
    "version": "*",
    "files": [
      { "content": "#include<bits/stdc++.h>\nusing namespace std;\nint main(){int a,b;cin>>a>>b;cout<
      

Checker yozish qo'llanmasi

Checker yoki validator kodi bajarilganda quyidagi fayllar avtomatik taqdim etiladi:

Fayl Tarkibi
input.txtSo'rovdagi stdin maydoni (masalaning kiruvchi ma'lumoti)
answer.txtSo'rovdagi expected_output maydoni (muallif to'g'ri javobi)
user.txtFoydalanuvchi dasturining stdout chiqishi
solution.txtFoydalanuvchi yuborgan manba kodi (files[0].content)

Chiqish kodlari (Exit codes)

Konstanta Hex / Dec Verdict Ma'nosi
exit(0xAC)172ACAccepted — javob to'g'ri
exit(0xAD)173WAWrong Answer — natija noto'g'ri
exit(0xAE)174PEPresentation Error — format xatosi (ortiqcha bo'sh joy)
exit(0xAF)175TLTime Limit — checker vaqt chegarasini belgiladi
exit(0xB0)176MLMemory Limit — checker xotira chegarasini belgiladi

Comparator turlari (comparator parametri)

QiymatTavsif
case_insensitiveDefault. Harf katta-kichikligini hisobga olmay solishtiradi (YES = yes = Yes)
defaultAynan solishtirish — trailing whitespace normallanadi, katta-kichik muhim
any_ofKo'p to'g'ri javob — expected_output da javoblar \n---\n bilan ajratiladi
programMaxsus Python checker kodi (checker maydonida beriladi)

case_insensitive comparator kodi (default)

ac = 0xAC
wa = 0xAD

a_in  = open("input.txt",   "r", encoding="utf-8").read()
a_out = open("answer.txt",  "r", encoding="utf-8").read()
u_out = open("user.txt",    "r", encoding="utf-8").read()
u_code= open("solution.txt","r", encoding="utf-8").read()

if a_out == u_out:
    exit(ac)
a = a_out.replace("\r", "").split("\n")
b = u_out.replace("\r", "").split("\n")
while a and a[-1] == "": a.pop()
while b and b[-1] == "": b.pop()
if len(a) != len(b):
    exit(wa)
for x, y in zip(a, b):
    if x.lower() != y.lower():
        exit(wa)
exit(ac)

Program comparator misollari

# comparator=program, case-sensitive aynan solishtirish
a_out = open("answer.txt", "r").read().strip()
u_out = open("user.txt",   "r").read().strip()

if a_out == u_out:
    exit(0xAC)  # AC
exit(0xAD)      # WA
# Haqiqiy son — absolyut yoki nisbiy xato 1e-6 dan oshmasin
a_out = open("answer.txt", "r").read().strip()
u_out = open("user.txt",   "r").read().strip()

try:
    expected = float(a_out)
    got      = float(u_out)
except ValueError:
    exit(0xAD)  # WA — raqam emas

eps = 1e-6
if abs(expected - got) <= eps * max(1.0, abs(expected)):
    exit(0xAC)  # AC
exit(0xAD)      # WA
# comparator=any_of: expected_output da '\n---\n' bilan ajratilgan javoblar
# Misol expected_output: "YES\n---\nYes\n---\nDA"
# Built-in any_of comparatorida bu avtomatik ishlaydi.
# Quyida program comparator bilan xuddi shu mantiq:

a_out = open("answer.txt", "r", encoding="utf-8").read()
u_out = open("user.txt",   "r", encoding="utf-8").read().replace("\r", "").rstrip()

for ans in a_out.split("\n---\n"):
    if ans.replace("\r", "").rstrip() == u_out:
        exit(0xAC)  # AC
exit(0xAD)          # WA
# checker_type=interactive uchun checker kodi misoli
# proc.stdin — foydalanuvchi dasturining kirishi
# proc.stdout — foydalanuvchi dasturining chiqishi
# AC, WA, PE, TL, ML — verdikt konstantalari

import random

n = random.randint(1, 100)

# Foydalanuvchi dasturiga birinchi so'rov
proc.stdin.write(f"100\n")
proc.stdin.flush()

for attempt in range(7):
    line = proc.stdout.readline().strip()
    guess = int(line)
    if guess == n:
        proc.stdin.write("correct\n")
        proc.stdin.flush()
        exit(AC)
    elif guess < n:
        proc.stdin.write("too_small\n")
    else:
        proc.stdin.write("too_big\n")
    proc.stdin.flush()

exit(WA)  # 7 urinishda topmadi

Validator — kod tahlili (validator parametri)

Validator foydalanuvchi manba kodini (solution.txt) bajarishdan OLDIN tekshiradi. Shartlar bajarilmasa verdict: "WA", validator_failed: true qaytariladi.

MaydonTurTavsif
ban_loopsbooleanfor, while, do, goto kalit so'zlarini taqiqlash
ban_keywordsstring[]Qo'shimcha taqiqlangan kalit so'zlar ro'yxati (so'z chegarasi bilan tekshiriladi)
max_charsnumberManba kodidagi maksimal belgilar soni
max_linesnumberManba kodidagi maksimal qatorlar soni
ban_operatorsstring[]Taqiqlangan operatorlar yoki satr parchalar (masalan: ["*", "/", "%"])
require_operatorsstring[]Majburiy bo'lishi kerak bo'lgan operatorlar yoki satr parchalar
custom_codestringMaxsus Python kodi (solution, wa, ac o'zgaruvchilariga kirish mumkin)
// So'rov tanasi — sikl kalit so'zlarini taqiqlash
{
  "language": "python", "version": "*",
  "files": [{ "content": "print(sum(range(101)))" }],
  "stdin": "", "expected_output": "5050",
  "validator": {
    "ban_loops": true
  }
}
// Ko'paytirish va bo'lishni taqiqlash, qo'shishni majburlash
{
  "validator": {
    "ban_operators": ["*", "/", "%"],
    "require_operators": ["+"],
    "max_chars": 500,
    "max_lines": 20
  }
}
// Maxsus tahlil: "import" so'zi bo'lmasligi kerak (Python uchun)
{
  "validator": {
    "custom_code": "if 'import' in solution: exit(wa)"
  }
}

// custom_code ichida mavjud o'zgaruvchilar:
//   solution — manba kodi matni (string)
//   wa = 0xAD — WA chiqish kodi
//   ac = 0xAC — AC chiqish kodi
GET /api/v2/packages Ochiq

Barcha mavjud paketlar va ularning o'rnatilgan/o'rnatilmagan holati.

curl https://your-server:2000/api/v2/packages

# Javob:
[
  { "language": "python", "language_version": "3.12.0", "installed": true },
  { "language": "gcc",    "language_version": "15.2.0", "installed": false }
]
POST /api/v2/packages Token kerak

Ko'rsatilgan tilni o'rnatadi. language va version majburiy.

curl -X POST https://your-server:2000/api/v2/packages \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "language": "python", "version": "3.12.0" }'
DELETE /api/v2/packages Token kerak

Ko'rsatilgan tilni o'chiradi.

curl -X DELETE https://your-server:2000/api/v2/packages \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "language": "python", "version": "3.12.0" }'
GET /api/v2/jobs Token kerak

Bajarilgan joblar tarixini ko'rsatadi.

Query paramDefaultTavsif
limit100Qaytariladigan yozuvlar soni (max 500)
offset0Sahifalash uchun boshlang'ich pozitsiya
language—Tilga ko'ra filtrlash
curl "https://your-server:2000/api/v2/jobs?limit=10&language=python" \
  -H "Authorization: Bearer YOUR_TOKEN"
GET /api/v2/jobs/:id Token kerak

Bitta jobning to'liq ma'lumotlari (stdin, stdout, stderr, vaqt, xotira).

curl "https://your-server:2000/api/v2/jobs/JOB_UUID" \
  -H "Authorization: Bearer YOUR_TOKEN"
DELETE /api/v2/jobs/:id Token kerak

Bitta jobni ID bo'yicha o'chiradi.

curl -X DELETE "https://your-server:2000/api/v2/jobs/JOB_UUID" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Javob:
{ "message": "Job o'chirildi" }
DELETE /api/v2/jobs Token kerak

Bir nechta jobni bir so'rovda o'chiradi. So'rov tanasida ids massivi (UUID ro'yxat) talab qilinadi.

curl -X DELETE "https://your-server:2000/api/v2/jobs" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "ids": ["uuid-1", "uuid-2", "uuid-3"] }'

# Javob:
{ "message": "3 ta job o'chirildi", "deleted": 3 }
POST /auth/login Ochiq

Username va parol orqali tizimga kiradi va token qaytaradi.

curl -X POST https://your-server:2000/auth/login \
  -H "Content-Type: application/json" \
  -d '{ "username": "admin", "password": "admin123" }'

# Javob:
{
  "token": "a1b2c3d4e5f6...",
  "username": "admin",
  "expires_at": "2026-05-23T10:00:00.000Z"
}
POST /auth/logout Token kerak

Joriy tokenni bekor qiladi (o'chiradi).

curl -X POST https://your-server:2000/auth/logout \
  -H "Authorization: Bearer YOUR_TOKEN"
GET /auth/me Token kerak

Token haqiqiy ekanini tekshiradi va foydalanuvchi ma'lumotlarini qaytaradi.

curl https://your-server:2000/auth/me \
  -H "Authorization: Bearer YOUR_TOKEN"

# Javob:
{ "username": "admin", "expires_at": "2026-05-23T10:00:00.000Z" }
POST /auth/tokens Token kerak

Ilovalar uchun yangi API token yaratadi. Login qilmasdan yangi token olish imkonini beradi.

curl -X POST https://your-server:2000/auth/tokens \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "label": "Mening ilovam", "expires_days": 90 }'

# Javob:
{
  "token": "newtoken...",
  "username": "admin",
  "label": "Mening ilovam",
  "expires_at": "2026-07-21T10:00:00.000Z",
  "expires_days": 90
}
GET /auth/tokens Token kerak

Barcha faol (muddati o'tmagan) tokenlar ro'yxatini qaytaradi.

curl https://your-server:2000/auth/tokens \
  -H "Authorization: Bearer YOUR_TOKEN"
DELETE /auth/tokens/:token Token kerak

Berilgan tokenni o'chiradi (bekor qiladi).

curl -X DELETE https://your-server:2000/auth/tokens/TOKEN_VALUE \
  -H "Authorization: Bearer YOUR_TOKEN"
GET /auth/users Token kerak

Barcha foydalanuvchilar ro'yxatini qaytaradi.

curl https://your-server:2000/auth/users \
  -H "Authorization: Bearer YOUR_TOKEN"
POST /auth/users Token kerak

Yangi foydalanuvchi qo'shadi.

curl -X POST https://your-server:2000/auth/users \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "username": "yangi_user", "password": "maxfiyparol" }'
PUT /auth/users/:username Token kerak

Boshqa foydalanuvchining parolini o'zgartiradi (admin funksiyasi). O'zingizning parolni o'zgartirish uchun PUT /auth/profile ishlatganingiz ma'qul.

curl -X PUT https://your-server:2000/auth/users/yangi_user \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "password": "yangiparol123" }'
DELETE /auth/users/:username Token kerak

Foydalanuvchini va uning barcha tokenlarini o'chiradi. O'zingizni o'chira olmaysiz.

curl -X DELETE https://your-server:2000/auth/users/yangi_user \
  -H "Authorization: Bearer YOUR_TOKEN"
PUT /auth/profile Token kerak

O'zingizning parolini o'zgartiradi. Joriy parolni tasdiqlash talab etiladi.

curl -X PUT https://your-server:2000/auth/profile \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "current_password": "joriy_parol",
    "new_password": "yangi_parol123"
  }'

# Muvaffaqiyatli javob:
{ "message": "Parol muvaffaqiyatli o'zgartirildi" }

HTTP Xato Kodlar

Kod Ma'nosi Sabab
200 OK So'rov muvaffaqiyatli bajarildi
400 Bad Request Noto'g'ri so'rov (majburiy maydon yetishmaydi yoki noto'g'ri tur)
401 Unauthorized Token yo'q, noto'g'ri, yoki muddati tugagan
404 Not Found So'ralgan resurs topilmadi (paket, job, foydalanuvchi)
409 Conflict Username allaqachon mavjud
413 Payload Too Large Yuborilgan ma'lumot hajmi juda katta
415 Unsupported Media Type Content-Type application/json bo'lishi shart
500 Internal Server Error Server ichki xatosi (log tekshiring)

WebSocket yopilish kodlari

KodMa'nosi
4000Ikkinchi marta "init" yuborildi
40011 sekund ichida "init" yuborilmadi (timeout)
4002So'rov qayta ishlashda xato
4003Hali "init" yuborilmagan
4004Faqat stdin'ga yozish mumkin
4005Noto'g'ri signal
4999Job muvaffaqiyatli yakunlandi