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.
/api/v2/execute
Token kerak
Kodni serverda izolyatsiyalangan muhitda bajaradi va natijani qaytaradi.
So'rov tanasi (Request Body)
| Maydon | Tur | Majburiy | Tavsif |
|---|---|---|---|
| language | string | Ha | Dasturlash tili nomi (masalan: "python", "javascript") |
| version | string | Ha | Til versiyasi (masalan: "3.12.0"). Wildcard: "*" |
| files | array | Ha | Fayl ob'ektlari ro'yxati (kamida bitta, content maydoni bilan) |
| files[].name | string | Yo'q | Fayl nomi (ko'rsatilmasa default nom ishlatiladi) |
| files[].content | string | Ha | Fayl tarkibi (kod matni) |
| files[].encoding | string | Yo'q | "utf8" (default) yoki "base64" |
| stdin | string | Yo'q | Dasturga beriluvchi standart kirish ma'lumoti |
| args | array | Yo'q | Buyruq qatori argumentlari (string ro'yxat) |
| run_timeout | number | Yo'q | Bajarish vaqt chegarasi (millisekund) |
| run_memory_limit | number | Yo'q | Xotira chegarasi (bayt) |
| compile_timeout | number | Yo'q | Kompilyatsiya vaqt chegarasi (millisekund) |
Javob (Response)
| Maydon | Tavsif |
|---|---|
| language | Bajarilgan tilning nomi |
| version | Bajarilgan versiya |
| run.stdout | Dastur chiqargan matn (stdout) |
| run.stderr | Xato chiqishi (stderr) |
| run.code | Chiqish kodi (0 = muvaffaqiyat) |
| run.time | Bajarish vaqti (millisekund, string) |
| run.memory | Ishlatilgan xotira (KB, string) |
| run.status | "ok", "timed_out", "memory_limit" |
| compile | Kompilyatsiya 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"
}
}
/api/v2/connect
Token kerak
WebSocket orqali kodni real-time rejimda bajaradi. stdout/stderr oqimini darhol ko'rish imkonini beradi.
Ulanish URL
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()
/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"
}
]
/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 |
|---|---|---|---|
| language | string | Ha | Tekshiriladigan koding dasturlash tili |
| version | string | Ha | Til versiyasi. Wildcard: "*" |
| files | array | Ha | Foydalanuvchi kodi (kamida bitta fayl, content maydoni bilan) |
| expected_output | string | Ha | Muallif javobi — checker answer.txt sifatida o'qiydi |
| stdin | string | Yo'q | Kiruvchi ma'lumot (stdin). Checker input.txt sifatida o'qiydi |
| comparator | string | Yo'q | Taqqoslash usuli: case_insensitive (default) · default · any_of · program |
| checker_type | string | Yo'q | Checker turi: default (oddiy) · interactive (real vaqtli suhbat) |
| checker | string | Yo'q | Python checker kodi (comparator=program yoki checker_type=interactive bilan) |
| validator | object | Yo'q | Kod matni tahlili: ban_loops, ban_keywords, max_chars, max_lines, ban_operators, require_operators, custom_code |
| run_timeout | number | Yo'q | Bajarish vaqt chegarasi (millisekund) |
| run_memory_limit | number | Yo'q | Xotira chegarasi (bayt) |
| compile_timeout | number | Yo'q | Kompilyatsiya vaqt chegarasi (millisekund) |
Javob (Response)
| Maydon | Tavsif |
|---|---|
| language | Bajarilgan til |
| version | Bajarilgan versiya |
| verdict | AC · WA · PE · TL · ML · CE · RE · OL |
| checker_exit | Checker dasturining chiqish kodi (raqam); CE/TL/RE holatda null |
| validator_failed | Validator shartlari bajarilmasa true; aks holda mavjud emas |
| run | Foydalanuvchi kodining bajarilish ma'lumotlari (stdout, stderr, time, memory…) |
| compile | Kompilyatsiya bosqichi (agar til kompilyatsiya talab qilsa) |
Verdict qiymatlari
| Verdict | To'liq nomi | Sabab |
|---|---|---|
| AC | Accepted | Checker exit(0xAC) (172) qaytardi — javob to'g'ri |
| WA | Wrong Answer | Checker exit(0xAD) (173) qaytardi yoki noma'lum kod |
| PE | Presentation Error | Checker exit(0xAE) (174) qaytardi — format xatosi |
| TL | Time Limit | Kod vaqt limitidan oshdi yoki checker exit(0xAF) (175) qaytardi |
| ML | Memory Limit | Checker exit(0xB0) (176) qaytardi — xotira chegarasi |
| CE | Compile Error | Kompilyatsiya muvaffaqiyatsiz tugadi |
| RE | Runtime Error | Kod bajarilishda xatolik (segfault, exception, nol bo'lmagan chiqish kodi) |
| OL | Output Limit | Chiqish 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"
}
}
/api/v2/check/demo
Ochiq
/check bilan bir xil, lekin token talab qilinmaydi. Resurs cheklovi avtomatik qo'llanadi:
Checker yozish qo'llanmasi
Checker yoki validator kodi bajarilganda quyidagi fayllar avtomatik taqdim etiladi:
| Fayl | Tarkibi |
|---|---|
| input.txt | So'rovdagi stdin maydoni (masalaning kiruvchi ma'lumoti) |
| answer.txt | So'rovdagi expected_output maydoni (muallif to'g'ri javobi) |
| user.txt | Foydalanuvchi dasturining stdout chiqishi |
| solution.txt | Foydalanuvchi yuborgan manba kodi (files[0].content) |
Chiqish kodlari (Exit codes)
| Konstanta | Hex / Dec | Verdict | Ma'nosi |
|---|---|---|---|
| exit(0xAC) | 172 | AC | Accepted — javob to'g'ri |
| exit(0xAD) | 173 | WA | Wrong Answer — natija noto'g'ri |
| exit(0xAE) | 174 | PE | Presentation Error — format xatosi (ortiqcha bo'sh joy) |
| exit(0xAF) | 175 | TL | Time Limit — checker vaqt chegarasini belgiladi |
| exit(0xB0) | 176 | ML | Memory Limit — checker xotira chegarasini belgiladi |
Comparator turlari (comparator parametri)
| Qiymat | Tavsif |
|---|---|
| case_insensitive | Default. Harf katta-kichikligini hisobga olmay solishtiradi (YES = yes = Yes) |
| default | Aynan solishtirish — trailing whitespace normallanadi, katta-kichik muhim |
| any_of | Ko'p to'g'ri javob — expected_output da javoblar \n---\n bilan ajratiladi |
| program | Maxsus 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.
| Maydon | Tur | Tavsif |
|---|---|---|
| ban_loops | boolean | for, while, do, goto kalit so'zlarini taqiqlash |
| ban_keywords | string[] | Qo'shimcha taqiqlangan kalit so'zlar ro'yxati (so'z chegarasi bilan tekshiriladi) |
| max_chars | number | Manba kodidagi maksimal belgilar soni |
| max_lines | number | Manba kodidagi maksimal qatorlar soni |
| ban_operators | string[] | Taqiqlangan operatorlar yoki satr parchalar (masalan: ["*", "/", "%"]) |
| require_operators | string[] | Majburiy bo'lishi kerak bo'lgan operatorlar yoki satr parchalar |
| custom_code | string | Maxsus 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
/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 }
]
/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" }'
/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" }'
/api/v2/jobs
Token kerak
Bajarilgan joblar tarixini ko'rsatadi.
| Query param | Default | Tavsif |
|---|---|---|
| limit | 100 | Qaytariladigan yozuvlar soni (max 500) |
| offset | 0 | Sahifalash 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"
/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"
/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" }
/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 }
/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"
}
/auth/logout
Token kerak
Joriy tokenni bekor qiladi (o'chiradi).
curl -X POST https://your-server:2000/auth/logout \ -H "Authorization: Bearer YOUR_TOKEN"
/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" }
/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
}
/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"
/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"
/auth/users
Token kerak
Barcha foydalanuvchilar ro'yxatini qaytaradi.
curl https://your-server:2000/auth/users \ -H "Authorization: Bearer YOUR_TOKEN"
/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" }'
/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" }'
/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"
/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
| Kod | Ma'nosi |
|---|---|
| 4000 | Ikkinchi marta "init" yuborildi |
| 4001 | 1 sekund ichida "init" yuborilmadi (timeout) |
| 4002 | So'rov qayta ishlashda xato |
| 4003 | Hali "init" yuborilmagan |
| 4004 | Faqat stdin'ga yozish mumkin |
| 4005 | Noto'g'ri signal |
| 4999 | Job muvaffaqiyatli yakunlandi |