API Endpoints Reference

Complete reference for all LaraDashboard REST API endpoints including users, posts, roles, permissions, settings, and more.

API Endpoints Reference

This document provides a complete reference for all LaraDashboard REST API endpoints.

Base URL

https://yourdomain.com/api/v1

Authentication

All endpoints require authentication unless noted. See Authentication.

Authorization: Bearer <token>
Accept: application/json
Content-Type: application/json

Users

List Users

GET /api/v1/users

Query Parameters:

Parameter Type Description
search string Search by name or email
role string Filter by role name
status string Filter: active, inactive
per_page integer Items per page (default: 15)
page integer Page number
sort string Sort field: name, email, -created_at

Response:

{
    "data": [
        {
            "id": 1,
            "first_name": "John",
            "last_name": "Doe",
            "email": "john@example.com",
            "avatar_url": "https://...",
            "roles": ["admin"],
            "created_at": "2024-01-15T10:30:00Z"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15,
        "total": 50,
        "last_page": 4
    },
    "links": {
        "first": "...",
        "last": "...",
        "next": "...",
        "prev": null
    }
}

Get User

GET /api/v1/users/{id}

Response:

{
    "data": {
        "id": 1,
        "first_name": "John",
        "last_name": "Doe",
        "email": "john@example.com",
        "avatar_url": "https://...",
        "roles": ["admin"],
        "permissions": ["users.view", "posts.create"],
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
    }
}

Create User

POST /api/v1/users

Request Body:

{
    "first_name": "Jane",
    "last_name": "Smith",
    "email": "jane@example.com",
    "password": "securepassword",
    "password_confirmation": "securepassword",
    "role": "editor"
}

Response (201 Created):

{
    "data": {
        "id": 2,
        "first_name": "Jane",
        "last_name": "Smith",
        "email": "jane@example.com",
        ...
    }
}

Update User

PUT /api/v1/users/{id}

Request Body:

{
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane.doe@example.com",
    "role": "admin"
}

Delete User

DELETE /api/v1/users/{id}

Response: 204 No Content

Bulk Delete Users

POST /api/v1/users/bulk-delete

Request Body:

{
    "ids": [1, 2, 3]
}

Roles

List Roles

GET /api/v1/roles

Response:

{
    "data": [
        {
            "id": 1,
            "name": "admin",
            "display_name": "Administrator",
            "description": "Full system access",
            "users_count": 5,
            "permissions_count": 25
        }
    ]
}

Get Role

GET /api/v1/roles/{id}

Response includes permissions:

{
    "data": {
        "id": 1,
        "name": "admin",
        "permissions": [
            {"id": 1, "name": "users.view"},
            {"id": 2, "name": "users.create"}
        ]
    }
}

Create Role

POST /api/v1/roles

Request Body:

{
    "name": "content-manager",
    "display_name": "Content Manager",
    "description": "Manages content",
    "permissions": [1, 2, 3, 4]
}

Update Role

PUT /api/v1/roles/{id}

Delete Role

DELETE /api/v1/roles/{id}

Permissions

List Permissions

GET /api/v1/permissions

Get Permission Groups

GET /api/v1/permissions/groups

Response:

{
    "data": {
        "users": [
            {"id": 1, "name": "users.view"},
            {"id": 2, "name": "users.create"}
        ],
        "posts": [
            {"id": 3, "name": "posts.view"},
            {"id": 4, "name": "posts.create"}
        ]
    }
}

Posts

List Posts

GET /api/v1/posts/{postType?}

Post Types: post, page, or custom types

Query Parameters:

Parameter Type Description
search string Search title and content
status string draft, published, scheduled
category integer Category ID
author integer Author user ID
from date Created after date
to date Created before date
include string Relations: author,categories

Response:

{
    "data": [
        {
            "id": 1,
            "title": "My Post",
            "slug": "my-post",
            "excerpt": "Post excerpt...",
            "status": "published",
            "featured_image": "https://...",
            "published_at": "2024-01-15T10:30:00Z",
            "author": {
                "id": 1,
                "name": "John Doe"
            },
            "categories": [
                {"id": 1, "name": "Technology"}
            ]
        }
    ],
    "meta": {...}
}

Get Post

GET /api/v1/posts/{postType}/{id}

Create Post

POST /api/v1/posts/{postType}

Request Body:

{
    "title": "New Post Title",
    "content": "Post content here...",
    "status": "draft",
    "categories": [1, 2],
    "tags": [3, 4],
    "published_at": "2024-02-01T10:00:00Z"
}

Update Post

PUT /api/v1/posts/{postType}/{id}

Delete Post

DELETE /api/v1/posts/{postType}/{id}

Bulk Delete Posts

POST /api/v1/posts/{postType}/bulk-delete

Terms (Categories/Tags)

List Terms

GET /api/v1/terms/{taxonomy}

Taxonomies: category, tag, or custom

Get Term

GET /api/v1/terms/{taxonomy}/{id}

Create Term

POST /api/v1/terms/{taxonomy}

Request Body:

{
    "name": "Technology",
    "slug": "technology",
    "description": "Tech related posts",
    "parent_id": null
}

Update Term

PUT /api/v1/terms/{taxonomy}/{id}

Delete Term

DELETE /api/v1/terms/{taxonomy}/{id}

Settings

Get All Settings

GET /api/v1/settings

Response:

{
    "data": {
        "site_name": "My Site",
        "site_description": "A great site",
        "admin_email": "admin@example.com",
        ...
    }
}

Get Single Setting

GET /api/v1/settings/{key}

Update Settings

PUT /api/v1/settings

Request Body:

{
    "site_name": "New Site Name",
    "site_description": "Updated description"
}

Modules

List Modules

GET /api/v1/modules

Response:

{
    "data": [
        {
            "name": "CRM",
            "alias": "crm",
            "description": "Customer management",
            "version": "1.0.0",
            "is_enabled": true
        }
    ]
}

Get Module

GET /api/v1/modules/{name}

Toggle Module Status

PATCH /api/v1/modules/{name}/toggle-status

Delete Module

DELETE /api/v1/modules/{name}

Email Templates

List Templates

GET /api/v1/email-templates

Get Template by Type

GET /api/v1/email-templates/by-type/{type}

Get Template Content

GET /api/v1/email-templates/{id}/content

Create Template

POST /api/v1/email-templates

Request Body:

{
    "name": "Welcome Email",
    "slug": "welcome-email",
    "type": "system",
    "subject": "Welcome to {{app_name}}",
    "content": "<html>...</html>"
}

Update Template

PUT /api/v1/email-templates/{id}

Delete Template

DELETE /api/v1/email-templates/{id}

Notifications

List Notifications

GET /api/v1/notifications

Get by Type

GET /api/v1/notifications/by-type/{type}

Get by Receiver Type

GET /api/v1/notifications/by-receiver-type/{type}

Create Notification

POST /api/v1/notifications

Update Notification

PUT /api/v1/notifications/{id}

Delete Notification

DELETE /api/v1/notifications/{id}

Action Logs

List Logs

GET /api/v1/action-logs

Query Parameters:

Parameter Type Description
user_id integer Filter by user
action string Filter: created, updated, deleted
model_type string Filter by model class
from date After date
to date Before date

Get Log

GET /api/v1/action-logs/{id}

AI Content

Get Providers

GET /api/v1/ai/providers

Response:

{
    "data": [
        {
            "name": "openai",
            "display_name": "OpenAI",
            "models": ["gpt-4", "gpt-3.5-turbo"],
            "is_configured": true
        },
        {
            "name": "claude",
            "display_name": "Anthropic Claude",
            "models": ["claude-3-opus"],
            "is_configured": false
        }
    ]
}

Generate Content

POST /api/v1/ai/generate-content

Request Body:

{
    "prompt": "Write a blog post about...",
    "provider": "openai",
    "options": {
        "max_tokens": 1000,
        "temperature": 0.7
    }
}

Response:

{
    "content": "Generated content here...",
    "usage": {
        "prompt_tokens": 50,
        "completion_tokens": 500,
        "total_tokens": 550
    }
}

Translations

Get Translations

GET /api/translations/{lang}

Response:

{
    "auth.login": "Login",
    "auth.logout": "Logout",
    "users.title": "Users",
    ...
}

Common Response Codes

Code Description
200 Success
201 Created
204 No Content (successful delete)
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
422 Validation Error
429 Too Many Requests
500 Server Error

Error Response Format

{
    "message": "Human readable error message",
    "error": "error_code",
    "errors": {
        "field_name": ["Validation error message"]
    }
}

Next Steps

/