Difference between revisions of "API:priv:get-submit"

From EjudgeWiki
(...)
(...)
 
(7 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
помощью API key или EJSID/session_id).
 
помощью API key или EJSID/session_id).
  
Method: GET
+
Method: <code>GET</code>
  
 
Параметры:
 
Параметры:
* submit_id (int64) - ID посылки
+
* <code>contest_id</code> (int) - идентификатор турнира
 +
* <code>action</code> (string) - строка get-submit
 +
* <code>submit_id</code> (int64) - ID посылки
  
Response content type: application/json
+
Response content type: <tt>application/json</tt>
  
 
В случае ошибки возвращается JSON:
 
В случае ошибки возвращается JSON:
Line 18: Line 20:
 
   "ok": false,
 
   "ok": false,
 
   "server_time": UNIX-TIMESTAMP,
 
   "server_time": UNIX-TIMESTAMP,
   "action": "submit-run-input",
+
   "action": "get-submit",
 
   "error": {
 
   "error": {
 
     "num": ERROR-CODE,
 
     "num": ERROR-CODE,
Line 31: Line 33:
 
   "ok": true,
 
   "ok": true,
 
   "result": {
 
   "result": {
     "serial_id": ID,
+
     "submit_id": ID,
 
     "user_id": USER-ID,
 
     "user_id": USER-ID,
 
     "prob_id": PROB-ID,
 
     "prob_id": PROB-ID,
 
     "lang_id": LANG-ID,
 
     "lang_id": LANG-ID,
 +
    "ext_user_kind": EXT-USER-KIND,
 +
    "ext_user": EXT-USER,
 +
    "notify_driver": NOTIFY-DRIVER,
 +
    "notify_kind" : NOTIFY-KIND,
 +
    "notify_queue" : NOTIFY-QUEUE,
 
     "status": STATUS,
 
     "status": STATUS,
 
     "status_str": STATUS-SHORT-STR,
 
     "status_str": STATUS-SHORT-STR,
 
     "compiler_output": COMPILER-MESSAGES,
 
     "compiler_output": COMPILER-MESSAGES,
 +
    "test_checker_output": TEST-CHECKER-MESSAGES,
 
     "time": CPU-TIME,
 
     "time": CPU-TIME,
 
     "real_time": REAL-TIME,
 
     "real_time": REAL-TIME,
Line 49: Line 57:
 
   }
 
   }
 
  }
 
  }
 +
 +
Поля <code>ext_user_kind</code>, <code>ext_user</code> содержат [[Внешние идентификаторы пользователей|внешний идентификатор пользователя]] ([[Изменения в версии 3.11.0|3.11.0]]), если он был установлен при отправке посылки.
 +
 +
Поля <code>notify_driver</code>, <code>notify_kind</code>, <code>notify_queue</code> содержат [[Нотификации во внешние системы|идентификатор очереди сообщений]] ([[Изменения в версии 3.11.0|3.11.0]]), если он был установлен при отправке посылки.
 +
 +
Пример кода на python:
 +
 +
import requests
 +
import os
 +
import urllib.parse
 +
 +
URL = 'http://HOST/cgi-bin/master'
 +
TOKEN = 'TOKEN'
 +
CONTEST_ID = 1
 +
SUBMIT_ID = 50
 +
 +
headers = {
 +
        "Authorization": "Bearer AQAA" + TOKEN
 +
}
 +
 +
data = {
 +
        "contest_id" : CONTEST_ID,
 +
        "json" : 1,
 +
        "action" : "get-submit",
 +
        "submit_id" : SUBMIT_ID,
 +
}
 +
response = requests.get(URL+"?"+urllib.parse.urlencode(data), headers=headers)
 +
print(response.json())

Latest revision as of 17:36, 27 January 2024

Навигация: Главная страница/Система ejudge/Использование/API/get-submit (привилегированный)

Запрос возвращает информацию о посылке, отправленной с помощью submit-run-input

Уровень доступа: администратор в контесте (аутентификация с помощью API key или EJSID/session_id).

Method: GET

Параметры:

  • contest_id (int) - идентификатор турнира
  • action (string) - строка get-submit
  • submit_id (int64) - ID посылки

Response content type: application/json

В случае ошибки возвращается JSON:

{
  "ok": false,
  "server_time": UNIX-TIMESTAMP,
  "action": "get-submit",
  "error": {
    "num": ERROR-CODE,
    "symbol": ERROR-SYMBOL,
    "message": ERROR-MESSAGE
  }
}

В случае успеха возвращается JSON:

{
  "ok": true,
  "result": {
    "submit_id": ID,
    "user_id": USER-ID,
    "prob_id": PROB-ID,
    "lang_id": LANG-ID,
    "ext_user_kind": EXT-USER-KIND,
    "ext_user": EXT-USER,
    "notify_driver": NOTIFY-DRIVER,
    "notify_kind" : NOTIFY-KIND,
    "notify_queue" : NOTIFY-QUEUE,
    "status": STATUS,
    "status_str": STATUS-SHORT-STR,
    "compiler_output": COMPILER-MESSAGES,
    "test_checker_output": TEST-CHECKER-MESSAGES,
    "time": CPU-TIME,
    "real_time": REAL-TIME,
    "exit_code": PROCESS-EXIT-CODE,
    "term_signal": TERMINATION-SIGNAL,
    "max_memory_used": VIRT-MEM-USE,
    "max_rss": MEMORY-USE,
    "input": INPUT,
    "output": OUTPUT-TEXT,
    "error": ERROR-TEXT
  }
}

Поля ext_user_kind, ext_user содержат внешний идентификатор пользователя (3.11.0), если он был установлен при отправке посылки.

Поля notify_driver, notify_kind, notify_queue содержат идентификатор очереди сообщений (3.11.0), если он был установлен при отправке посылки.

Пример кода на python:

import requests
import os
import urllib.parse

URL = 'http://HOST/cgi-bin/master'
TOKEN = 'TOKEN'
CONTEST_ID = 1
SUBMIT_ID = 50

headers = {
        "Authorization": "Bearer AQAA" + TOKEN
}

data = {
        "contest_id" : CONTEST_ID,
        "json" : 1,
        "action" : "get-submit",
        "submit_id" : SUBMIT_ID,
}
response = requests.get(URL+"?"+urllib.parse.urlencode(data), headers=headers)
print(response.json())