{
    "openapi": "3.0.0",
    "info": {
        "title": "Laravel 12 SaaS Application Boilerplate API",
        "description": "Production-ready Laravel 12 SaaS RESTful API documentation.",
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "http://127.0.0.1:8000",
            "description": "API Server"
        }
    ],
    "paths": {
        "/api/getBlogs": {
            "get": {
                "tags": [
                    "Blogs"
                ],
                "summary": "Get paginated blog posts",
                "description": "Fetch paginated blogs with default of 10 items per page. Consumers can customize items per page via 'per_page' or 'limit'.",
                "operationId": "37752c42c62629839c884ec35ffd436c",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of blog items per page (default: 10, max: 100)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Alias for per_page",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number to fetch (default: 1)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "description": "Optional filter by status ('all', 'published', 'scheduled', 'draft')",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "all"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Optional keyword search in title, description, or author",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Blogs retrieved successfully."
                    }
                }
            }
        },
        "/api/getBlog/{identifier}": {
            "get": {
                "tags": [
                    "Blogs"
                ],
                "summary": "Get single blog post details",
                "description": "Fetch single blog post details using either blog ID or slug. Can also be requested via /api/blogs/{identifier} or query parameters (?id= or ?slug=).",
                "operationId": "86b55a291fd52ab92f80bec726a9821e",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Blog ID or Blog Slug",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "query",
                        "description": "Blog ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "slug",
                        "in": "query",
                        "description": "Blog slug",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Blog retrieved successfully."
                    },
                    "404": {
                        "description": "Blog not found."
                    },
                    "400": {
                        "description": "Missing blog identifier."
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "name": "Authorization",
                "in": "header",
                "bearerFormat": "JWT",
                "scheme": "bearer"
            }
        }
    },
    "tags": [
        {
            "name": "Blogs",
            "description": "Blogs"
        }
    ]
}