Files
lehuo/packages/contracts/src/api.ts
T
2026-08-12 14:35:12 +08:00

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;
}