Files
doorman/backend-services/utils/error_codes.py
2025-12-10 23:09:05 -05:00

227 lines
6.7 KiB
Python

"""
Centralized Error Code Registry
This module provides a single source of truth for all error codes used across Doorman.
Using constants ensures consistency and makes it easier to search/refactor error codes.
Usage:
from utils.error_codes import ErrorCode
raise HTTPException(
status_code=401,
detail={
'error_code': ErrorCode.AUTH_INVALID_CREDENTIALS,
'message': 'Invalid username or password'
}
)
return ResponseModel(
status_code=404,
error_code=ErrorCode.USER_NOT_FOUND,
error_message='User not found'
).dict()
"""
class ErrorCode:
"""
Centralized error code constants.
Naming Convention:
- Format: CATEGORY_DESCRIPTION = 'PREFIX###'
- Categories: AUTH, USER, API, ENDPOINT, GATEWAY, etc.
- Prefixes: AUTH, USR, API, END, GTW, etc.
- Numbers: Sequential within category
Example:
AUTH_INVALID_CREDENTIALS = 'AUTH001'
USER_NOT_FOUND = 'USR002'
"""
AUTH_MISSING_CREDENTIALS = 'AUTH001'
AUTH_INVALID_CREDENTIALS = 'AUTH002'
AUTH_TOKEN_INVALID = 'AUTH003'
AUTH_TOKEN_MISSING = 'AUTH004'
AUTH_TOKEN_EXPIRED = 'AUTH005'
AUTH_USER_INACTIVE = 'AUTH007'
AUTH_UNEXPECTED_ERROR = 'AUTH900'
USR_ALREADY_EXISTS = 'USR001'
USR_NOT_FOUND = 'USR002'
USR_DELETE_FAILED = 'USR003'
USR_UPDATE_FAILED = 'USR004'
USR_WEAK_PASSWORD = 'USR005'
USR_UNAUTHORIZED_ACCESS = 'USR006'
USR_INVALID_OPERATION = 'USR007'
USR_PERMISSION_DENIED = 'USR008'
USR_USERNAME_INVALID = 'USR013'
USR_EMAIL_INVALID = 'USR015'
USR_TOO_MANY_ATTRIBUTES = 'USR016'
API_ALREADY_EXISTS = 'API001'
API_CREATE_FAILED = 'API002'
API_NOT_FOUND = 'API003'
API_UPDATE_NAME_FORBIDDEN = 'API005'
API_NO_DATA_TO_UPDATE = 'API006'
API_PERMISSION_DENIED = 'API007'
API_INVALID_REQUEST = 'API008'
API_PROTO_INVALID = 'API009'
API_PUBLIC_CREDITS_CONFLICT = 'API013'
END_ALREADY_EXISTS = 'END001'
END_CREATE_FAILED = 'END002'
END_NOT_FOUND = 'END003'
END_UPDATE_FAILED = 'END004'
END_DELETE_FAILED = 'END005'
END_INVALID_TYPE = 'END006'
END_VALIDATION_FAILED = 'END007'
END_SERVERS_REQUIRED = 'END008'
END_CIRCULAR_DEPENDENCY = 'END009'
END_PERMISSION_DENIED = 'END010'
END_INVALID_REQUEST = 'END011'
END_MISSING_PROTO = 'END012'
END_PATH_CONFLICT = 'END013'
END_METHOD_CONFLICT = 'END014'
END_SERVER_INVALID = 'END015'
END_TIMEOUT_INVALID = 'END016'
END_RETRIES_INVALID = 'END017'
END_HEADERS_INVALID = 'END018'
END_BODY_TRANSFORM_INVALID = 'END019'
END_RESPONSE_TRANSFORM_INVALID = 'END020'
END_LOAD_BALANCER_INVALID = 'END021'
END_CIRCUIT_BREAKER_INVALID = 'END022'
END_RATE_LIMIT_INVALID = 'END023'
ROLE_ALREADY_EXISTS = 'ROLE001'
ROLE_CREATE_FAILED = 'ROLE002'
ROLE_NOT_FOUND = 'ROLE004'
ROLE_NAME_IMMUTABLE = 'ROLE005'
ROLE_UPDATE_FAILED = 'ROLE006'
ROLE_NO_DATA_TO_UPDATE = 'ROLE007'
ROLE_DELETE_FAILED = 'ROLE008'
ROLE_PERMISSION_DENIED = 'ROLE009'
ROLE_INVALID_REQUEST = 'ROLE010'
ROLE_IN_USE = 'ROLE011'
ROLE_PERMISSION_INVALID = 'ROLE013'
ROLE_NAME_INVALID = 'ROLE014'
ROLE_RESERVED_NAME = 'ROLE015'
ROLE_DESCRIPTION_REQUIRED = 'ROLE016'
GRP_ALREADY_EXISTS = 'GRP001'
GRP_CREATE_FAILED = 'GRP002'
GRP_NOT_FOUND = 'GRP003'
GRP_UPDATE_FAILED = 'GRP004'
GRP_DELETE_FAILED = 'GRP005'
GRP_NAME_IMMUTABLE = 'GRP006'
GRP_NO_DATA_TO_UPDATE = 'GRP007'
GRP_PERMISSION_DENIED = 'GRP008'
GRP_INVALID_REQUEST = 'GRP009'
GRP_IN_USE = 'GRP010'
SUB_INVALID_API = 'SUB003'
SUB_ALREADY_EXISTS = 'SUB004'
SUB_NOT_FOUND = 'SUB005'
SUB_CREATE_FAILED = 'SUB006'
SUB_PERMISSION_DENIED = 'SUB007'
SUB_INVALID_REQUEST = 'SUB008'
SUB_DELETE_FAILED = 'SUB009'
RTG_ALREADY_EXISTS = 'RTG001'
RTG_CREATE_FAILED = 'RTG002'
RTG_NOT_FOUND = 'RTG004'
RTG_UPDATE_FAILED = 'RTG005'
RTG_DELETE_FAILED = 'RTG006'
RTG_NO_DATA_TO_UPDATE = 'RTG007'
RTG_NAME_IMMUTABLE = 'RTG008'
RTG_PERMISSION_DENIED = 'RTG009'
RTG_INVALID_REQUEST = 'RTG010'
RTG_PRIORITY_CONFLICT = 'RTG011'
RTG_PATH_INVALID = 'RTG012'
RTG_CONDITION_INVALID = 'RTG013'
CRD_GROUP_EXISTS = 'CRD001'
CRD_CREATE_FAILED = 'CRD002'
CRD_GROUP_IMMUTABLE = 'CRD003'
CRD_NOT_FOUND = 'CRD004'
CRD_UPDATE_FAILED = 'CRD005'
CRD_NO_DATA_TO_UPDATE = 'CRD006'
CRD_DELETE_NOT_FOUND = 'CRD007'
CRD_DELETE_FAILED = 'CRD008'
CRD_GROUP_NAME_REQUIRED = 'CRD009'
CRD_API_KEY_REQUIRED = 'CRD010'
CRD_DATABASE_ERROR = 'CRD011'
CRD_DATABASE_ERROR_UPDATE = 'CRD012'
CRD_DATABASE_ERROR_DELETE = 'CRD013'
CRD_USERNAME_MISMATCH = 'CRD014'
CRD_USER_CREDITS_ERROR = 'CRD015'
CRD_GET_ALL_ERROR = 'CRD016'
CRD_USER_NOT_FOUND = 'CRD017'
CRD_GET_USER_ERROR = 'CRD018'
CRD_LIST_ERROR = 'CRD020'
CRD_FETCH_ERROR = 'CRD021'
CRD_RETRIEVE_ERROR = 'CRD022'
GTW_UPSTREAM_ERROR = 'GTW001'
GTW_TIMEOUT = 'GTW002'
GTW_NO_AVAILABLE_SERVERS = 'GTW003'
GTW_INVALID_REQUEST = 'GTW004'
GTW_RATE_LIMIT_EXCEEDED = 'GTW005'
GTW_SERVICE_UNAVAILABLE = 'GTW006'
GTW_AUTHENTICATION_REQUIRED = 'GTW007'
GTW_SUBSCRIPTION_REQUIRED = 'GTW008'
GTW_CIRCUIT_BREAKER_OPEN = 'GTW010'
GTW_INVALID_ENDPOINT = 'GTW011'
GTW_PROTO_DECODE_ERROR = 'GTW013'
GTW_UNEXPECTED_ERROR = 'GTW999'
CFG_PERMISSION_DENIED = 'CFG001'
CFG_API_PERMISSION_DENIED = 'CFG002'
CFG_ENDPOINT_PERMISSION_DENIED = 'CFG003'
CFG_GROUP_PERMISSION_DENIED = 'CFG004'
CFG_ROLE_PERMISSION_DENIED = 'CFG005'
CFG_ROUTING_PERMISSION_DENIED = 'CFG006'
CFG_SUBSCRIPTION_PERMISSION_DENIED = 'CFG007'
CFG_NOT_FOUND = 'CFG404'
SEC_PERMISSION_DENIED = 'SEC001'
SEC_UPDATE_FAILED = 'SEC002'
SEC_INVALID_IP = 'SEC003'
SEC_INVALID_SETTING = 'SEC004'
SEC_PROTECTED_SETTING = 'SEC005'
LOG_PERMISSION_DENIED = 'LOG001'
LOG_INVALID_LEVEL = 'LOG002'
LOG_UPDATE_FAILED = 'LOG003'
LOG_QUERY_FAILED = 'LOG004'
LOG_EXPORT_FAILED = 'LOG005'
MON_PERMISSION_DENIED = 'MON001'
MON_QUERY_FAILED = 'MON002'
MON_UNEXPECTED_ERROR = 'MON003'
MEM_PERMISSION_DENIED = 'MEM001'
MEM_DUMP_FAILED = 'MEM002'
MEM_OPERATION_FAILED = 'MEM003'
DEMO_ALREADY_SEEDED = 'DEMO001'
DEMO_SEED_FAILED = 'DEMO999'
TLS_PERMISSION_DENIED = 'TLS001'
TLS_UNEXPECTED_ERROR = 'TLS999'
GEN_INVALID_REQUEST = 'GEN001'
GEN_VALIDATION_ERROR = 'GEN002'
ISE_INTERNAL_ERROR = 'ISE001'
REQ_BODY_TOO_LARGE = 'REQ001'
VAL_INVALID_JSON = 'VAL001'
JWT_DECODE_ERROR = 'JWT001'
RATE_LIMIT_EXCEEDED = 'RATE_LIMIT_EXCEEDED'
# Alias for backward compatibility
class ErrorCodes(ErrorCode):
"""Deprecated: Use ErrorCode instead."""
pass