{
    "api": "YAML JSON TOON Database",
    "version": "1.0.0",
    "format": "json",
    "dataset": {
        "slug": "solid-principles",
        "title": "SOLID Principles",
        "description": "Five design principles for writing maintainable object-oriented code.",
        "category": "Design Patterns",
        "category_slug": "design-patterns",
        "tags": "design-patterns,solid,oop,software-engineering",
        "view_count": 0
    },
    "data": [
        {
            "principle": "S - Single Responsibility",
            "description": "A class should have only one reason to change.",
            "example": "Separate UserAuth from UserProfile."
        },
        {
            "principle": "O - Open/Closed",
            "description": "Open for extension, closed for modification.",
            "example": "Add new payment types without changing existing processor."
        },
        {
            "principle": "L - Liskov Substitution",
            "description": "Subtypes must be substitutable for their base types.",
            "example": "A Square should not extend Rectangle if width=height invariant breaks."
        },
        {
            "principle": "I - Interface Segregation",
            "description": "Prefer many small client-specific interfaces over one large interface.",
            "example": "Separate Printer and Scanner interfaces."
        },
        {
            "principle": "D - Dependency Inversion",
            "description": "Depend on abstractions, not concrete implementations.",
            "example": "Controller depends on ILogger interface, not FileLogger."
        }
    ]
}