fix: use POST /upload endpoint for updating NPM certificates

NPM returns 404 on PUT /api/nginx/certificates/{id} with multipart data.
The correct endpoint for uploading certificate files is:
POST /api/nginx/certificates/{id}/upload

Also removed unnecessary 'provider' data field from the upload request.
This commit is contained in:
Dmitriy Fofanov
2026-02-25 10:13:17 +03:00
parent fa8fbc6323
commit 3cc3a9876e
+8 -7
View File
@@ -798,6 +798,12 @@ class NginxProxyManagerAPI:
"""
Обновление существующего сертификата
NPM использует отдельный endpoint для загрузки файлов сертификата:
POST /api/nginx/certificates/{id}/upload (multipart/form-data)
PUT /api/nginx/certificates/{id} принимает только JSON-метаданные,
а не файлы, поэтому для обновления файлов используется /upload.
Args:
cert_id: ID сертификата в NPM
cert_path: Путь к файлу сертификата (fullchain.pem или cert.pem)
@@ -806,18 +812,13 @@ class NginxProxyManagerAPI:
Returns:
True если успешно
"""
url = f"{self.host}/api/nginx/certificates/{cert_id}"
url = f"{self.host}/api/nginx/certificates/{cert_id}/upload"
try:
files, _cert_key = self._prepare_cert_files(cert_path, key_path)
# Дополнительные поля формы
data = {
'provider': 'other', # other для custom сертификатов
}
self.logger.info(f"Обновление сертификата ID {cert_id} в NPM...")
response = self.session.put(url, files=files, data=data, timeout=30)
response = self.session.post(url, files=files, timeout=30)
response.raise_for_status()
self.logger.info("Сертификат успешно обновлен в NPM")