Files
dyolink/.cursor/skills/api-errors/SKILL.md

1.1 KiB

name, description
name description
dyolink-api-errors Adds or migrates Dyolink API error codes with frontend translations. Use when adding backend validation errors, permission errors, or migrating catch blocks to getUserFacingError.

Dyolink API errors

Backend

  1. Add to ErrorCode in backend/src/common/errors/error-codes.ts.
  2. Throw with AppException:
throw new AppException(ErrorCode.MY_CODE, HttpStatus.BAD_REQUEST, [
  { field: 'email', code: ErrorCode.VALIDATION_EMAIL_INVALID },
]);
  1. DTOs: @IsEmail({}, { message: ErrorCode.VALIDATION_EMAIL_INVALID })

Frontend

  1. Add key under "errors" in en.json, fa.json, nl.json (key = error code string).
  2. In components:
const tErrors = useTranslations('errors');
// ...
catch (err: unknown) {
  toast.showError(getUserFacingError(err, tErrors, t('fallbackKey')));
}
  1. Do not use err.message or (err as Error).message for user display.

Axios shape

Parsed in lib/api/client — expects { success: false, error: { code, details? } }.

See rule: .cursor/rules/api-errors-i18n.mdc