# ERROR HANDLING & STATUS CODES

[← Về Backend](./01-backend-architecture.md) | [Next: Validation Rules →](./04-validation-business-rules.md)

---

## 20.1. HTTP Status Codes

- **200 OK**: Success
- **201 Created**: Resource created successfully
- **400 Bad Request**: Validation error, Invalid input
- **401 Unauthorized**: Authentication required
- **403 Forbidden**: Insufficient permissions
- **404 Not Found**: Resource not found
- **409 Conflict**: Resource conflict (e.g., duplicate)
- **422 Unprocessable Entity**: Business rule violation
- **500 Internal Server Error**: Server error

---

## 20.2. Error Response Format

```json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid input data",
    "details": [
      {
        "field": "email",
        "message": "Email is required"
      }
    ],
    "timestamp": "2024-01-15T10:30:00Z"
  }
}
```

---

## 20.3. Common Error Codes

- `VALIDATION_ERROR`: Input validation failed
- `NOT_FOUND`: Resource not found
- `UNAUTHORIZED`: Authentication required
- `FORBIDDEN`: Insufficient permissions
- `DUPLICATE_ENTRY`: Resource already exists
- `BUSINESS_RULE_VIOLATION`: Business rule violated
- `EXTERNAL_SERVICE_ERROR`: External API error

---

**Next**: [Validation & Business Rules](./04-validation-business-rules.md)
