50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
export const API_ERROR_CODES = {
|
|
AUTH_REQUIRED: 'AUTH_REQUIRED',
|
|
AUTH_SESSION_EXPIRED: 'AUTH_SESSION_EXPIRED',
|
|
FORBIDDEN: 'FORBIDDEN',
|
|
VALIDATION_ERROR: 'VALIDATION_ERROR',
|
|
INVALID_CREDENTIALS: 'INVALID_CREDENTIALS',
|
|
ACCOUNT_LOCKED: 'ACCOUNT_LOCKED',
|
|
ACCOUNT_DISABLED: 'ACCOUNT_DISABLED',
|
|
WECHAT_LOGIN_FAILED: 'WECHAT_LOGIN_FAILED',
|
|
RESOURCE_NOT_FOUND: 'RESOURCE_NOT_FOUND',
|
|
APPLICATION_NOT_FOUND: 'APPLICATION_NOT_FOUND',
|
|
BENEFICIARY_NOT_FOUND: 'BENEFICIARY_NOT_FOUND',
|
|
CASE_NOT_FOUND: 'CASE_NOT_FOUND',
|
|
SERVICE_RECORD_NOT_FOUND: 'SERVICE_RECORD_NOT_FOUND',
|
|
FILE_NOT_FOUND: 'FILE_NOT_FOUND',
|
|
FOLLOW_UP_NOT_FOUND: 'FOLLOW_UP_NOT_FOUND',
|
|
VOLUNTEER_NOT_FOUND: 'VOLUNTEER_NOT_FOUND',
|
|
VOLUNTEER_NOT_APPROVED: 'VOLUNTEER_NOT_APPROVED',
|
|
PROJECT_NOT_FOUND: 'PROJECT_NOT_FOUND',
|
|
ACTIVITY_NOT_FOUND: 'ACTIVITY_NOT_FOUND',
|
|
REGISTRATION_NOT_FOUND: 'REGISTRATION_NOT_FOUND',
|
|
ACTIVITY_FULL: 'ACTIVITY_FULL',
|
|
REGISTRATION_CLOSED: 'REGISTRATION_CLOSED',
|
|
RESOURCE_CONFLICT: 'RESOURCE_CONFLICT',
|
|
UPLOAD_NOT_READY: 'UPLOAD_NOT_READY',
|
|
STORAGE_UNAVAILABLE: 'STORAGE_UNAVAILABLE',
|
|
DUPLICATE_REQUEST: 'DUPLICATE_REQUEST',
|
|
INVALID_STATE_TRANSITION: 'INVALID_STATE_TRANSITION',
|
|
RATE_LIMITED: 'RATE_LIMITED',
|
|
INTERNAL_ERROR: 'INTERNAL_ERROR',
|
|
} as const;
|
|
|
|
export type ApiErrorCode = (typeof API_ERROR_CODES)[keyof typeof API_ERROR_CODES];
|
|
|
|
export interface ApiSuccessResponse<T> {
|
|
success: true;
|
|
data: T;
|
|
requestId: string;
|
|
}
|
|
|
|
export interface ApiErrorResponse {
|
|
success: false;
|
|
error: {
|
|
code: ApiErrorCode;
|
|
message: string;
|
|
details?: Record<string, string[]>;
|
|
};
|
|
requestId: string;
|
|
}
|