Introduction

This API follows REST principles and returns JSON responses. All requests require authentication via API tokens.

Request Headers

Content-Type: application/json
Accept: application/json
Authorization: Bearer YOUR_API_TOKEN

Authentication

Login

Obtain an API token by providing valid credentials.

POST /api/v1/auth/login
Request Body:
{
    "email": "user@example.com",
    "password": "password"
}
Response (200 OK):
{
    "success": true,
    "data": {
        "token": "1|abcdefghijklmnopqrstuvwxyz",
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "user@example.com"
        }
    }
}

Logout

POST /api/v1/auth/logout
Headers:
Authorization: Bearer YOUR_TOKEN
Response (200 OK):
{
    "success": true,
    "message": "Logged out successfully"
}

Users

Get All Users

GET /api/v1/users
Query Parameters:
page Page number (default: 1)
per_page Items per page (default: 15)
Response (200 OK):
{
    "success": true,
    "data": {
        "users": [
            {
                "id": 1,
                "name": "John Doe",
                "email": "john@example.com",
                "created_at": "2024-01-01T00:00:00.000000Z"
            }
        ],
        "pagination": {
            "total": 100,
            "per_page": 15,
            "current_page": 1,
            "last_page": 7
        }
    }
}

Get Single User

GET /api/v1/users/{id}
Response (200 OK):
{
    "success": true,
    "data": {
        "id": 1,
        "name": "John Doe",
        "email": "john@example.com",
        "created_at": "2024-01-01T00:00:00.000000Z"
    }
}

Create User

POST /api/v1/users
Request Body:
{
    "name": "Jane Doe",
    "email": "jane@example.com",
    "password": "password123",
    "password_confirmation": "password123"
}
Response (201 Created):
{
    "success": true,
    "data": {
        "id": 2,
        "name": "Jane Doe",
        "email": "jane@example.com"
    },
    "message": "User created successfully"
}

Update User

PUT/PATCH /api/v1/users/{id}
Request Body:
{
    "name": "Jane Updated",
    "email": "jane.updated@example.com"
}

Delete User

DELETE /api/v1/users/{id}
Response (200 OK):
{
    "success": true,
    "message": "User deleted successfully"
}

Posts

Get All Posts

GET /api/v1/posts
Response (200 OK):
{
    "success": true,
    "data": [
        {
            "id": 1,
            "title": "First Post",
            "content": "Post content here...",
            "author": {
                "id": 1,
                "name": "John Doe"
            },
            "created_at": "2024-01-01T00:00:00.000000Z"
        }
    ]
}

Error Handling

The API uses standard HTTP status codes and returns errors in JSON format.

HTTP Status Codes

Code Meaning
200 OK - Request successful
201 Created - Resource created successfully
400 Bad Request - Invalid request data
401 Unauthorized - Authentication required
403 Forbidden - Access denied
404 Not Found - Resource not found
422 Unprocessable Entity - Validation failed
500 Internal Server Error

Error Response Format

{
    "success": false,
    "message": "Validation failed",
    "errors": {
        "email": [
            "The email field is required."
        ],
        "password": [
            "The password must be at least 8 characters."
        ]
    }
}

Rate Limiting

API requests are limited to 60 requests per minute per user.