mirror of
https://github.com/apidoorman/doorman.git
synced 2025-12-30 14:09:59 -06:00
227 lines
6.7 KiB
Python
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
|