Committed by Hermes autonomous QA sprint 2026-08-13. These files were modified during the Aug 12 sprint but never committed.
142 lines
3.7 KiB
JavaScript
142 lines
3.7 KiB
JavaScript
/**
|
|
* DC-086: Structured error code system for consistent API error responses.
|
|
*
|
|
* Format: DC-[MODULE]-[NUMBER]
|
|
* Modules: AUTH, CONTAINER, SERVICE, DNS, CADDY, CA, BACKUP, CONFIG,
|
|
* BILL, HEALTH, NETWORK, SYSTEM, GENERAL
|
|
*
|
|
* Usage in routes:
|
|
* const { ErrorCodes } = require('../src/utilities/error-codes');
|
|
* errorResponse(res, 400, ErrorCodes.CONTAINER.INVALID_ID, 'Container ID has invalid characters');
|
|
*
|
|
* Clients can use the machine-readable code for i18n and error-specific handling
|
|
* while the human message provides immediate context.
|
|
*/
|
|
|
|
const ErrorCodes = {
|
|
// ── General ──
|
|
GENERAL: {
|
|
INVALID_INPUT: 'DC-GEN-001',
|
|
NOT_FOUND: 'DC-GEN-002',
|
|
RATE_LIMITED: 'DC-GEN-003',
|
|
INTERNAL: 'DC-GEN-004',
|
|
UNAUTHORIZED: 'DC-GEN-005',
|
|
FORBIDDEN: 'DC-GEN-006',
|
|
CONFLICT: 'DC-GEN-007',
|
|
TIMEOUT: 'DC-GEN-008',
|
|
},
|
|
|
|
// ── Authentication ──
|
|
AUTH: {
|
|
NO_SESSION: 'DC-AUTH-001',
|
|
INVALID_TOKEN: 'DC-AUTH-002',
|
|
SESSION_EXPIRED: 'DC-AUTH-003',
|
|
TOTP_REQUIRED: 'DC-AUTH-004',
|
|
TOTP_INVALID: 'DC-AUTH-005',
|
|
PROVIDER_DISABLED: 'DC-AUTH-006',
|
|
INVITE_EXPIRED: 'DC-AUTH-007',
|
|
INVITE_INVALID: 'DC-AUTH-008',
|
|
KEY_REVOKED: 'DC-AUTH-009',
|
|
LAST_ADMIN: 'DC-AUTH-010',
|
|
},
|
|
|
|
// ── Containers ──
|
|
CONTAINER: {
|
|
NOT_FOUND: 'DC-CONT-001',
|
|
INVALID_ID: 'DC-CONT-002',
|
|
INVALID_NAME: 'DC-CONT-003',
|
|
INVALID_IMAGE: 'DC-CONT-004',
|
|
ALREADY_RUNNING: 'DC-CONT-005',
|
|
ALREADY_STOPPED: 'DC-CONT-006',
|
|
START_FAILED: 'DC-CONT-007',
|
|
STOP_FAILED: 'DC-CONT-008',
|
|
DELETE_FAILED: 'DC-CONT-009',
|
|
INVALID_RESOURCES: 'DC-CONT-010',
|
|
DOCKER_UNREACHABLE: 'DC-CONT-011',
|
|
},
|
|
|
|
// ── Services ──
|
|
SERVICE: {
|
|
NOT_FOUND: 'DC-SVC-001',
|
|
INVALID_ID: 'DC-SVC-002',
|
|
INVALID_SUBDOMAIN: 'DC-SVC-003',
|
|
INVALID_PORT: 'DC-SVC-004',
|
|
DUPLICATE_ID: 'DC-SVC-005',
|
|
INVALID_URL: 'DC-SVC-006',
|
|
INVALID_PROTOCOL: 'DC-SVC-007',
|
|
PORT_IN_USE: 'DC-SVC-008',
|
|
DEPENDENCY_CYCLE: 'DC-SVC-009',
|
|
},
|
|
|
|
// ── DNS ──
|
|
DNS: {
|
|
INVALID_RECORD: 'DC-DNS-001',
|
|
INVALID_ZONE: 'DC-DNS-002',
|
|
PROVIDER_ERROR: 'DC-DNS-003',
|
|
PROPAGATION_TIMEOUT: 'DC-DNS-004',
|
|
INVALID_CREDENTIALS: 'DC-DNS-005',
|
|
},
|
|
|
|
// ── Caddy / Reverse Proxy ──
|
|
CADDY: {
|
|
ADMIN_UNREACHABLE: 'DC-CAD-001',
|
|
CONFIG_INVALID: 'DC-CAD-002',
|
|
RELOAD_FAILED: 'DC-CAD-003',
|
|
SITE_EXISTS: 'DC-CAD-004',
|
|
SITE_NOT_FOUND: 'DC-CAD-005',
|
|
},
|
|
|
|
// ── Certificate Authority ──
|
|
CA: {
|
|
NOT_INITIALIZED: 'DC-CA-001',
|
|
INVALID_DOMAIN: 'DC-CA-002',
|
|
CERT_NOT_FOUND: 'DC-CA-003',
|
|
GENERATION_FAILED: 'DC-CA-004',
|
|
INVALID_FORMAT: 'DC-CA-005',
|
|
},
|
|
|
|
// ── Backup ──
|
|
BACKUP: {
|
|
NO_SCHEDULE: 'DC-BAK-001',
|
|
BACKUP_FAILED: 'DC-BAK-002',
|
|
RESTORE_FAILED: 'DC-BAK-003',
|
|
INVALID_CONFIG: 'DC-BAK-004',
|
|
},
|
|
|
|
// ── Billing / License ──
|
|
BILL: {
|
|
CHECKOUT_FAILED: 'DC-BILL-001',
|
|
LICENSE_INVALID: 'DC-BILL-002',
|
|
LICENSE_EXPIRED: 'DC-BILL-003',
|
|
LICENSE_NOT_FOUND: 'DC-BILL-004',
|
|
FEATURE_LOCKED: 'DC-BILL-005',
|
|
WEBHOOK_INVALID: 'DC-BILL-006',
|
|
},
|
|
|
|
// ── Health Monitoring ──
|
|
HEALTH: {
|
|
CHECK_FAILED: 'DC-HLT-001',
|
|
INCIDENT_NOT_FOUND: 'DC-HLT-002',
|
|
INVALID_SEVERITY: 'DC-HLT-003',
|
|
},
|
|
|
|
// ── Network ──
|
|
NETWORK: {
|
|
INVALID_IP: 'DC-NET-001',
|
|
INVALID_CIDR: 'DC-NET-002',
|
|
INVALID_HOSTNAME: 'DC-NET-003',
|
|
GATEWAY_TIMEOUT: 'DC-NET-004',
|
|
},
|
|
|
|
// ── System / Config ──
|
|
SYSTEM: {
|
|
CONFIG_INVALID: 'DC-SYS-001',
|
|
CONFIG_SAVE_FAILED: 'DC-SYS-002',
|
|
STARTUP_FAILED: 'DC-SYS-003',
|
|
DATA_DIR_UNSAFE: 'DC-SYS-004',
|
|
DISK_FULL: 'DC-SYS-005',
|
|
},
|
|
};
|
|
|
|
module.exports = { ErrorCodes };
|