Complete Blog System API
Full-featured blogging platform with posts, comments, categories, tags, and media management
Categories
Blog post categories
/api/blog/categories
Public
Retrieve a paginated list of all categories
GET /api/blog/categories
Accept: application/json
{
"data": [
{
"name": "Web Development",
"slug": "web-development",
"description": "HTML, CSS, JavaScript and modern frameworks",
"parent_id": null,
"posts_count": 15,
"color": "#3B82F6"
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/categories/{id}
Public
Retrieve a single categorie by ID
GET /api/blog/categories/1
Accept: application/json
{
"name": "Web Development",
"slug": "web-development",
"description": "HTML, CSS, JavaScript and modern frameworks",
"parent_id": null,
"posts_count": 15,
"color": "#3B82F6"
}
{
"error": "Resource not found",
"message": "The requested categorie does not exist"
}
/api/blog/categories
Auth Required
Create a new categorie
POST /api/blog/categories
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"name": "Web Development",
"slug": "web-development",
"description": "HTML, CSS, JavaScript and modern frameworks",
"parent_id": null,
"posts_count": 15,
"color": "#3B82F6"
}
{
"name": "Web Development",
"slug": "web-development",
"description": "HTML, CSS, JavaScript and modern frameworks",
"parent_id": null,
"posts_count": 15,
"color": "#3B82F6"
}
/api/blog/categories/{id}
Auth Required
Update an existing categorie
PUT /api/blog/categories/1
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"name": "Web Development",
"slug": "web-development",
"description": "HTML, CSS, JavaScript and modern frameworks",
"parent_id": null,
"posts_count": 15,
"color": "#3B82F6"
}
{
"name": "Web Development",
"slug": "web-development",
"description": "HTML, CSS, JavaScript and modern frameworks",
"parent_id": null,
"posts_count": 15,
"color": "#3B82F6"
}
/api/blog/categories/{id}
Auth Required
Delete a categorie by ID
DELETE /api/blog/categories/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"message": "Categorie deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}
Comments
Post comments and replies
/api/blog/comments
Public
Retrieve a paginated list of all comments
GET /api/blog/comments
Accept: application/json
{
"data": [
{
"post_id": 1,
"post_title": "Getting Started with React Hooks",
"user_id": 4,
"user_name": "Sophie Martin",
"user_avatar": "https://i.pravatar.cc/50?img=28",
"parent_id": null,
"content": "Great tutorial! This really helped me understand hooks better.",
"likes": 12,
"created_at": "2024-01-15T12:30:00Z"
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/comments/{id}
Public
Retrieve a single comment by ID
GET /api/blog/comments/1
Accept: application/json
{
"post_id": 1,
"post_title": "Getting Started with React Hooks",
"user_id": 4,
"user_name": "Sophie Martin",
"user_avatar": "https://i.pravatar.cc/50?img=28",
"parent_id": null,
"content": "Great tutorial! This really helped me understand hooks better.",
"likes": 12,
"created_at": "2024-01-15T12:30:00Z"
}
{
"error": "Resource not found",
"message": "The requested comment does not exist"
}
/api/blog/comments
Auth Required
Auto User ID
Create a new comment
POST /api/blog/comments
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"post_id": 1,
"post_title": "Getting Started with React Hooks",
"user_id": 4,
"user_name": "Sophie Martin",
"user_avatar": "https://i.pravatar.cc/50?img=28",
"parent_id": null,
"content": "Great tutorial! This really helped me understand hooks better.",
"likes": 12
}
{
"post_id": 1,
"post_title": "Getting Started with React Hooks",
"user_id": 4,
"user_name": "Sophie Martin",
"user_avatar": "https://i.pravatar.cc/50?img=28",
"parent_id": null,
"content": "Great tutorial! This really helped me understand hooks better.",
"likes": 12,
"created_at": "2024-01-15T12:30:00Z"
}
/api/blog/comments/{id}
Auth Required
Ownership Check
Update an existing comment
PUT /api/blog/comments/1
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"post_id": 1,
"post_title": "Getting Started with React Hooks",
"user_id": 4,
"user_name": "Sophie Martin",
"user_avatar": "https://i.pravatar.cc/50?img=28",
"parent_id": null,
"content": "Great tutorial! This really helped me understand hooks better.",
"likes": 12
}
{
"post_id": 1,
"post_title": "Getting Started with React Hooks",
"user_id": 4,
"user_name": "Sophie Martin",
"user_avatar": "https://i.pravatar.cc/50?img=28",
"parent_id": null,
"content": "Great tutorial! This really helped me understand hooks better.",
"likes": 12,
"created_at": "2024-01-15T12:30:00Z"
}
/api/blog/comments/{id}
Auth Required
Ownership Check
Delete a comment by ID
DELETE /api/blog/comments/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"message": "Comment deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}
Media
Images and files attached to posts
/api/blog/media
Public
Retrieve a paginated list of all media
GET /api/blog/media
Accept: application/json
{
"data": [
{
"post_id": 1,
"filename": "react-hooks-diagram.png",
"url": "https://picsum.photos/1200/600?random=media1",
"type": "image/png",
"size": 245678,
"uploaded_by": 1,
"uploaded_at": "2024-01-14T16:30:00Z"
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/media/{id}
Public
Retrieve a single media by ID
GET /api/blog/media/1
Accept: application/json
{
"post_id": 1,
"filename": "react-hooks-diagram.png",
"url": "https://picsum.photos/1200/600?random=media1",
"type": "image/png",
"size": 245678,
"uploaded_by": 1,
"uploaded_at": "2024-01-14T16:30:00Z"
}
{
"error": "Resource not found",
"message": "The requested media does not exist"
}
/api/blog/media
Auth Required
Create a new media
POST /api/blog/media
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"post_id": 1,
"filename": "react-hooks-diagram.png",
"url": "https://picsum.photos/1200/600?random=media1",
"type": "image/png",
"size": 245678,
"uploaded_by": 1,
"uploaded_at": "2024-01-14T16:30:00Z"
}
{
"post_id": 1,
"filename": "react-hooks-diagram.png",
"url": "https://picsum.photos/1200/600?random=media1",
"type": "image/png",
"size": 245678,
"uploaded_by": 1,
"uploaded_at": "2024-01-14T16:30:00Z"
}
/api/blog/media/{id}
Public
Update an existing media
PUT /api/blog/media/1
Content-Type: application/json
{
"post_id": 1,
"filename": "react-hooks-diagram.png",
"url": "https://picsum.photos/1200/600?random=media1",
"type": "image/png",
"size": 245678,
"uploaded_by": 1,
"uploaded_at": "2024-01-14T16:30:00Z"
}
{
"post_id": 1,
"filename": "react-hooks-diagram.png",
"url": "https://picsum.photos/1200/600?random=media1",
"type": "image/png",
"size": 245678,
"uploaded_by": 1,
"uploaded_at": "2024-01-14T16:30:00Z"
}
/api/blog/media/{id}
Auth Required
Delete a media by ID
DELETE /api/blog/media/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"message": "Media deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}
Pages
Static pages (About, Contact, etc.)
/api/blog/pages
Public
Retrieve a paginated list of all pages
GET /api/blog/pages
Accept: application/json
{
"data": [
{
"title": "About Us",
"slug": "about",
"content": "We are a team of passionate developers and designers...",
"template": "default",
"is_published": true
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/pages/{id}
Public
Retrieve a single page by ID
GET /api/blog/pages/1
Accept: application/json
{
"title": "About Us",
"slug": "about",
"content": "We are a team of passionate developers and designers...",
"template": "default",
"is_published": true
}
{
"error": "Resource not found",
"message": "The requested page does not exist"
}
/api/blog/pages
Auth Required
Create a new page
POST /api/blog/pages
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"title": "About Us",
"slug": "about",
"content": "We are a team of passionate developers and designers...",
"template": "default",
"is_published": true
}
{
"title": "About Us",
"slug": "about",
"content": "We are a team of passionate developers and designers...",
"template": "default",
"is_published": true
}
/api/blog/pages/{id}
Auth Required
Update an existing page
PUT /api/blog/pages/1
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"title": "About Us",
"slug": "about",
"content": "We are a team of passionate developers and designers...",
"template": "default",
"is_published": true
}
{
"title": "About Us",
"slug": "about",
"content": "We are a team of passionate developers and designers...",
"template": "default",
"is_published": true
}
/api/blog/pages/{id}
Auth Required
Delete a page by ID
DELETE /api/blog/pages/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"message": "Page deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}
Posts
Blog articles and posts
/api/blog/posts
Public
Retrieve a paginated list of all posts
GET /api/blog/posts
Accept: application/json
{
"data": [
{
"title": "Getting Started with React Hooks",
"slug": "getting-started-react-hooks",
"excerpt": "Learn the fundamentals of React Hooks and how they can simplify your components.",
"content": "React Hooks revolutionized the way we write React components...",
"featured_image": "https://picsum.photos/800/450?random=blog1",
"author_id": 1,
"author_name": "Alex Thompson",
"author_avatar": "https://i.pravatar.cc/50?img=15",
"category_id": 2,
"category_name": "Frontend",
"tags": [
"JavaScript",
"React",
"Tutorial"
],
"status": "published",
"views": 1245,
"likes": 89,
"comments_count": 12,
"reading_time": "8 min read",
"published_at": "2024-01-15T09:00:00Z"
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/posts/{id}
Public
Retrieve a single post by ID
GET /api/blog/posts/1
Accept: application/json
{
"title": "Getting Started with React Hooks",
"slug": "getting-started-react-hooks",
"excerpt": "Learn the fundamentals of React Hooks and how they can simplify your components.",
"content": "React Hooks revolutionized the way we write React components...",
"featured_image": "https://picsum.photos/800/450?random=blog1",
"author_id": 1,
"author_name": "Alex Thompson",
"author_avatar": "https://i.pravatar.cc/50?img=15",
"category_id": 2,
"category_name": "Frontend",
"tags": [
"JavaScript",
"React",
"Tutorial"
],
"status": "published",
"views": 1245,
"likes": 89,
"comments_count": 12,
"reading_time": "8 min read",
"published_at": "2024-01-15T09:00:00Z"
}
{
"error": "Resource not found",
"message": "The requested post does not exist"
}
/api/blog/posts
Auth Required
Auto User ID
Create a new post
POST /api/blog/posts
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"title": "Getting Started with React Hooks",
"slug": "getting-started-react-hooks",
"excerpt": "Learn the fundamentals of React Hooks and how they can simplify your components.",
"content": "React Hooks revolutionized the way we write React components...",
"featured_image": "https://picsum.photos/800/450?random=blog1",
"author_id": 1,
"author_name": "Alex Thompson",
"author_avatar": "https://i.pravatar.cc/50?img=15",
"category_id": 2,
"category_name": "Frontend",
"tags": [
"JavaScript",
"React",
"Tutorial"
],
"status": "published",
"views": 1245,
"likes": 89,
"comments_count": 12,
"reading_time": "8 min read",
"published_at": "2024-01-15T09:00:00Z"
}
{
"title": "Getting Started with React Hooks",
"slug": "getting-started-react-hooks",
"excerpt": "Learn the fundamentals of React Hooks and how they can simplify your components.",
"content": "React Hooks revolutionized the way we write React components...",
"featured_image": "https://picsum.photos/800/450?random=blog1",
"author_id": 1,
"author_name": "Alex Thompson",
"author_avatar": "https://i.pravatar.cc/50?img=15",
"category_id": 2,
"category_name": "Frontend",
"tags": [
"JavaScript",
"React",
"Tutorial"
],
"status": "published",
"views": 1245,
"likes": 89,
"comments_count": 12,
"reading_time": "8 min read",
"published_at": "2024-01-15T09:00:00Z"
}
/api/blog/posts/{id}
Auth Required
Ownership Check
Update an existing post
PUT /api/blog/posts/1
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"title": "Getting Started with React Hooks",
"slug": "getting-started-react-hooks",
"excerpt": "Learn the fundamentals of React Hooks and how they can simplify your components.",
"content": "React Hooks revolutionized the way we write React components...",
"featured_image": "https://picsum.photos/800/450?random=blog1",
"author_id": 1,
"author_name": "Alex Thompson",
"author_avatar": "https://i.pravatar.cc/50?img=15",
"category_id": 2,
"category_name": "Frontend",
"tags": [
"JavaScript",
"React",
"Tutorial"
],
"status": "published",
"views": 1245,
"likes": 89,
"comments_count": 12,
"reading_time": "8 min read",
"published_at": "2024-01-15T09:00:00Z"
}
{
"title": "Getting Started with React Hooks",
"slug": "getting-started-react-hooks",
"excerpt": "Learn the fundamentals of React Hooks and how they can simplify your components.",
"content": "React Hooks revolutionized the way we write React components...",
"featured_image": "https://picsum.photos/800/450?random=blog1",
"author_id": 1,
"author_name": "Alex Thompson",
"author_avatar": "https://i.pravatar.cc/50?img=15",
"category_id": 2,
"category_name": "Frontend",
"tags": [
"JavaScript",
"React",
"Tutorial"
],
"status": "published",
"views": 1245,
"likes": 89,
"comments_count": 12,
"reading_time": "8 min read",
"published_at": "2024-01-15T09:00:00Z"
}
/api/blog/posts/{id}
Auth Required
Ownership Check
Delete a post by ID
DELETE /api/blog/posts/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"message": "Post deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}
Settings
Blog configuration and metadata
/api/blog/settings
Public
Retrieve a paginated list of all settings
GET /api/blog/settings
Accept: application/json
{
"data": [
{
"key": "site_name",
"value": "Tech Blog Hub",
"description": "The name of the blog"
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/settings/{id}
Public
Retrieve a single setting by ID
GET /api/blog/settings/1
Accept: application/json
{
"key": "site_name",
"value": "Tech Blog Hub",
"description": "The name of the blog"
}
{
"error": "Resource not found",
"message": "The requested setting does not exist"
}
/api/blog/settings
Public
Create a new setting
POST /api/blog/settings
Content-Type: application/json
{
"key": "site_name",
"value": "Tech Blog Hub",
"description": "The name of the blog"
}
{
"key": "site_name",
"value": "Tech Blog Hub",
"description": "The name of the blog"
}
/api/blog/settings/{id}
Auth Required
Update an existing setting
PUT /api/blog/settings/1
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"key": "site_name",
"value": "Tech Blog Hub",
"description": "The name of the blog"
}
{
"key": "site_name",
"value": "Tech Blog Hub",
"description": "The name of the blog"
}
/api/blog/settings/{id}
Public
Delete a setting by ID
DELETE /api/blog/settings/1
Accept: application/json
{
"message": "Setting deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}
Subscribers
Newsletter subscribers
/api/blog/subscribers
Auth Required
Retrieve a paginated list of all subscribers
GET /api/blog/subscribers
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"data": [
{
"email": "subscriber1@example.com",
"name": "Michael Brown",
"subscribed_at": "2024-01-10T10:00:00Z",
"is_active": true
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/subscribers/{id}
Auth Required
Retrieve a single subscriber by ID
GET /api/blog/subscribers/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"email": "subscriber1@example.com",
"name": "Michael Brown",
"subscribed_at": "2024-01-10T10:00:00Z",
"is_active": true
}
{
"error": "Resource not found",
"message": "The requested subscriber does not exist"
}
/api/blog/subscribers
Public
Create a new subscriber
POST /api/blog/subscribers
Content-Type: application/json
{
"email": "subscriber1@example.com",
"name": "Michael Brown",
"subscribed_at": "2024-01-10T10:00:00Z",
"is_active": true
}
{
"email": "subscriber1@example.com",
"name": "Michael Brown",
"subscribed_at": "2024-01-10T10:00:00Z",
"is_active": true
}
/api/blog/subscribers/{id}
Public
Update an existing subscriber
PUT /api/blog/subscribers/1
Content-Type: application/json
{
"email": "subscriber1@example.com",
"name": "Michael Brown",
"subscribed_at": "2024-01-10T10:00:00Z",
"is_active": true
}
{
"email": "subscriber1@example.com",
"name": "Michael Brown",
"subscribed_at": "2024-01-10T10:00:00Z",
"is_active": true
}
/api/blog/subscribers/{id}
Auth Required
Delete a subscriber by ID
DELETE /api/blog/subscribers/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"message": "Subscriber deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}
Tags
Post tags for classification
/api/blog/tags
Public
Retrieve a paginated list of all tags
GET /api/blog/tags
Accept: application/json
{
"data": [
{
"name": "JavaScript",
"slug": "javascript",
"posts_count": 25
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/tags/{id}
Public
Retrieve a single tag by ID
GET /api/blog/tags/1
Accept: application/json
{
"name": "JavaScript",
"slug": "javascript",
"posts_count": 25
}
{
"error": "Resource not found",
"message": "The requested tag does not exist"
}
/api/blog/tags
Auth Required
Create a new tag
POST /api/blog/tags
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"name": "JavaScript",
"slug": "javascript",
"posts_count": 25
}
{
"name": "JavaScript",
"slug": "javascript",
"posts_count": 25
}
/api/blog/tags/{id}
Public
Update an existing tag
PUT /api/blog/tags/1
Content-Type: application/json
{
"name": "JavaScript",
"slug": "javascript",
"posts_count": 25
}
{
"name": "JavaScript",
"slug": "javascript",
"posts_count": 25
}
/api/blog/tags/{id}
Auth Required
Delete a tag by ID
DELETE /api/blog/tags/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"message": "Tag deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}
Users
Blog authors and registered readers
/api/blog/users
Public
Retrieve a paginated list of all users
GET /api/blog/users
Accept: application/json
{
"data": [
{
"name": "Alex Thompson",
"username": "alexthompson",
"email": "alex@techblog.com",
"password": "$2y$12$dfZSbIdUQR02rz5b22XzB.eV/PrxZ7XEA1sNmRt01/CYImOD3aud2",
"api_token": "476d8ebd8fc1a73c18b01c2c4ad5914a9b9f6bebb474e44beb88d4f26f22e61b",
"avatar": "https://i.pravatar.cc/150?img=15",
"bio": "Tech enthusiast and software developer. Writing about web development and AI.",
"role": "author",
"posts_count": 12,
"joined_at": "2023-01-15",
"social_links": {
"twitter": "@alexthompson",
"github": "alexthompson"
}
},
...
],
"meta": {
"current_page": 1,
"total": 50,
"per_page": 15
}
}
/api/blog/users/{id}
Public
Retrieve a single user by ID
GET /api/blog/users/1
Accept: application/json
{
"name": "Alex Thompson",
"username": "alexthompson",
"email": "alex@techblog.com",
"password": "$2y$12$dfZSbIdUQR02rz5b22XzB.eV/PrxZ7XEA1sNmRt01/CYImOD3aud2",
"api_token": "476d8ebd8fc1a73c18b01c2c4ad5914a9b9f6bebb474e44beb88d4f26f22e61b",
"avatar": "https://i.pravatar.cc/150?img=15",
"bio": "Tech enthusiast and software developer. Writing about web development and AI.",
"role": "author",
"posts_count": 12,
"joined_at": "2023-01-15",
"social_links": {
"twitter": "@alexthompson",
"github": "alexthompson"
}
}
{
"error": "Resource not found",
"message": "The requested user does not exist"
}
/api/blog/users
Public
Create a new user
POST /api/blog/users
Content-Type: application/json
{
"name": "Alex Thompson",
"username": "alexthompson",
"email": "alex@techblog.com",
"password": "$2y$12$dfZSbIdUQR02rz5b22XzB.eV/PrxZ7XEA1sNmRt01/CYImOD3aud2",
"api_token": "476d8ebd8fc1a73c18b01c2c4ad5914a9b9f6bebb474e44beb88d4f26f22e61b",
"avatar": "https://i.pravatar.cc/150?img=15",
"bio": "Tech enthusiast and software developer. Writing about web development and AI.",
"role": "author",
"posts_count": 12,
"joined_at": "2023-01-15",
"social_links": {
"twitter": "@alexthompson",
"github": "alexthompson"
}
}
{
"name": "Alex Thompson",
"username": "alexthompson",
"email": "alex@techblog.com",
"password": "$2y$12$dfZSbIdUQR02rz5b22XzB.eV/PrxZ7XEA1sNmRt01/CYImOD3aud2",
"api_token": "476d8ebd8fc1a73c18b01c2c4ad5914a9b9f6bebb474e44beb88d4f26f22e61b",
"avatar": "https://i.pravatar.cc/150?img=15",
"bio": "Tech enthusiast and software developer. Writing about web development and AI.",
"role": "author",
"posts_count": 12,
"joined_at": "2023-01-15",
"social_links": {
"twitter": "@alexthompson",
"github": "alexthompson"
}
}
/api/blog/users/{id}
Auth Required
Ownership Check
Update an existing user
PUT /api/blog/users/1
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"name": "Alex Thompson",
"username": "alexthompson",
"email": "alex@techblog.com",
"password": "$2y$12$dfZSbIdUQR02rz5b22XzB.eV/PrxZ7XEA1sNmRt01/CYImOD3aud2",
"api_token": "476d8ebd8fc1a73c18b01c2c4ad5914a9b9f6bebb474e44beb88d4f26f22e61b",
"avatar": "https://i.pravatar.cc/150?img=15",
"bio": "Tech enthusiast and software developer. Writing about web development and AI.",
"role": "author",
"posts_count": 12,
"joined_at": "2023-01-15",
"social_links": {
"twitter": "@alexthompson",
"github": "alexthompson"
}
}
{
"name": "Alex Thompson",
"username": "alexthompson",
"email": "alex@techblog.com",
"password": "$2y$12$dfZSbIdUQR02rz5b22XzB.eV/PrxZ7XEA1sNmRt01/CYImOD3aud2",
"api_token": "476d8ebd8fc1a73c18b01c2c4ad5914a9b9f6bebb474e44beb88d4f26f22e61b",
"avatar": "https://i.pravatar.cc/150?img=15",
"bio": "Tech enthusiast and software developer. Writing about web development and AI.",
"role": "author",
"posts_count": 12,
"joined_at": "2023-01-15",
"social_links": {
"twitter": "@alexthompson",
"github": "alexthompson"
}
}
/api/blog/users/{id}
Auth Required
Ownership Check
Delete a user by ID
DELETE /api/blog/users/1
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
{
"message": "User deleted successfully"
}
{
"error": "Deletion failed",
"message": "Unable to delete the resource"
}