{"openapi":"3.1.0","info":{"title":"Переводчик","version":"1.0.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/languages":{"get":{"tags":["LibreTranslate"],"summary":"Lt Languages","description":"Список языков в формате LibreTranslate. ?engine=quality — языки LLM.","operationId":"lt_languages_languages_get","parameters":[{"name":"engine","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Engine"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/translate":{"post":{"tags":["LibreTranslate"],"summary":"Lt Translate","description":"LibreTranslate: q (строка или список), source (код или auto), target, format (text|html),\napi_key; дополнительно engine=fast|quality.","operationId":"lt_translate_translate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/detect":{"post":{"tags":["LibreTranslate"],"summary":"Lt Detect","operationId":"lt_detect_detect_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/translate_file":{"post":{"tags":["LibreTranslate"],"summary":"Lt Translate File","description":"LibreTranslate: multipart file, source, target, api_key (+ engine). Ждёт окончания\nперевода и возвращает translatedFileUrl.","operationId":"lt_translate_file_translate_file_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/languages":{"get":{"tags":["v1"],"summary":"V1 Languages","operationId":"v1_languages_api_v1_languages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/translate":{"post":{"tags":["v1"],"summary":"V1 Translate","description":"JSON: {text | q, source=\"auto\", target, engine=\"fast\"|\"quality\", format=\"text\"|\"html\"}.","operationId":"v1_translate_api_v1_translate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/translate/stream":{"post":{"tags":["v1"],"summary":"V1 Translate Stream","description":"Server-Sent Events: meta → delta* → done (или error). Для движка quality текст\nприходит по мере генерации; пока запрос ждёт в очереди, идут ping-комментарии.","operationId":"v1_translate_stream_api_v1_translate_stream_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/files":{"post":{"tags":["v1"],"summary":"V1 File","description":"multipart: file, target, source=auto, engine. Возвращает задачу; статус — GET /api/v1/jobs/{id}.","operationId":"v1_file_api_v1_files_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/jobs":{"get":{"tags":["v1"],"summary":"V1 Jobs","operationId":"v1_jobs_api_v1_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/jobs/{job_id}":{"get":{"tags":["v1"],"summary":"V1 Job","operationId":"v1_job_api_v1_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["v1"],"summary":"V1 Job Delete","operationId":"v1_job_delete_api_v1_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/jobs/{job_id}/download":{"get":{"tags":["v1"],"summary":"V1 Download","description":"Скачать результат. Без ключа: id задачи — случайные 128 бит (как ссылки LibreTranslate).","operationId":"v1_download_api_v1_jobs__job_id__download_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/status":{"get":{"tags":["v1"],"summary":"V1 Status","operationId":"v1_status_api_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}