1.3 KiB
Harbor error contract v1
Public API failures use one envelope:
{
"success": false,
"error": {
"code": "PROVIDER_UNAVAILABLE",
"message": "Провайдер подписки временно недоступен.",
"retryable": true,
"correlationId": "6f1a63de-30f9-4dc5-b8ce-38d38c164fe3",
"details": "HTTP 503"
}
}
code, Russian user copy, HTTP status and retry policy come from src/shared/errors.js. The browser maps copy and retry behavior by code; it does not display server-provided details. Unknown failures use UNKNOWN, never expose the raw exception, and always receive a correlation reference. Server logs use the same reference and redact complete HTTP(S) URLs.
Errors are local operation results, not canonical state replacements. A failed apply keeps the previous snapshot; in particular, server existence is validated before desiredServerId is persisted. Frontend errors are shown beside subscription or connection controls. Only retryable codes expose Повторить.
This is a coordinated API change: old frontends do not understand the object-valued error field, so frontend and control plane must be deployed together. Persisted files and volumes are unchanged. Rollback is code-only and requires no data migration.