date-api — API Documentation

Complete API reference with endpoint samples, request/response examples, by SIRTHEPROGRAMMER.

Base URL: https://localhost:8000/v1
Format: JSON
Docs Path: /docs/api/

0

Total Endpoints

0

Implemented

0

Sample Files

v1

API Version

API Endpoints

GET /api/v1/account/privacy Implemented

Retrieve privacy settings for authenticated user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Accept": "application\/json"
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": {
            "user_id": 8,
            "is_private": false,
            "show_location": true,
            "allow_messages": true,
            "show_online_status": true,
            "allow_notifications": true
        }
    }
}
POST /api/v1/account/privacy Implemented

Update privacy settings for authenticated user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "body": {
        "is_private": false,
        "show_location": true,
        "allow_messages": true,
        "show_online_status": true,
        "allow_notifications": true
    }
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Privacy settings updated successfully",
        "data": {
            "user_id": 8,
            "is_private": false,
            "show_location": true,
            "allow_messages": true,
            "show_online_status": true,
            "allow_notifications": true
        }
    }
}
GET /api/v1/admin/dashboard Implemented

Get platform statistics and health metrics

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "data": {
            "total_users": 13,
            "active_users": 13,
            "banned_users": 0,
            "total_posts": 0,
            "new_users_this_month": 13,
            "platform_health": {
                "user_growth_rate": 13,
                "active_user_percentage": 100
            }
        }
    }
}
GET /api/v1/admin/flagged-content Implemented

Get list of all flagged posts that need review

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "query": {
        "page": 1,
        "limit": 20
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "data": [],
        "pagination": {
            "total": 0,
            "page": 1,
            "limit": 20,
            "pages": 0
        }
    }
}
POST /api/v1/admin/login Implemented

Authenticate as admin user and receive admin token

Request
{
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "email": "admin@dateapi.com",
        "password": "admin123456"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Admin login successful",
        "token": "admin-token-8d08f70f8b79d30ab42ee5021259cc33b13537dbb20ac05fa69df1db214b688b"
    }
}
GET /api/v1/admin/posts Implemented

Get paginated list of all posts with filtering options

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "query": {
        "page": 1,
        "limit": 20,
        "sort_by": "created_at",
        "order": "desc"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "data": [],
        "pagination": {
            "total": 0,
            "page": 1,
            "limit": 20,
            "pages": 0
        }
    }
}
DELETE /api/v1/admin/posts/{id} Implemented

Delete a post from the platform

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "parameters": {
        "id": "Post ID (required)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Post deleted successfully"
    }
}
GET /api/v1/admin/posts/{id} Implemented

Get detailed information about a specific post

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "parameters": {
        "id": "Post ID (required)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "data": {
            "id": 1,
            "user_id": 1,
            "title": "Post Title",
            "description": "Post content",
            "image": null,
            "is_flagged": false,
            "flag_reason": null,
            "created_at": "2025-12-29T19:33:11.000000Z"
        }
    }
}
POST /api/v1/admin/posts/{id}/flag Implemented

Flag a post for review due to policy violations

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx",
        "Content-Type": "application\/json"
    },
    "parameters": {
        "id": "Post ID (required)"
    },
    "body": {
        "reason": "Inappropriate content"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Post flagged successfully",
        "data": {
            "id": 1,
            "is_flagged": true,
            "flag_reason": "Inappropriate content"
        }
    }
}
POST /api/v1/admin/posts/{id}/unflag Implemented

Remove flag from a post after review

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "parameters": {
        "id": "Post ID (required)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Post unflagged successfully",
        "data": {
            "id": 1,
            "is_flagged": false,
            "flag_reason": null
        }
    }
}
GET /api/v1/admin/settings Implemented

Get current platform system settings and configuration

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "data": {
            "platform_name": "Date API",
            "version": "1.0.0",
            "maintenance_mode": false,
            "email_verification_required": true,
            "user_registration_enabled": true,
            "max_posts_per_user": 1000
        }
    }
}
GET /api/v1/admin/statistics Implemented

Get platform statistics for a specific period

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "query": {
        "period": "month"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "period": "month",
        "data": {
            "new_users": 13,
            "new_posts": 0,
            "active_users": 13,
            "total_users": 13,
            "total_posts": 0
        }
    }
}
GET /api/v1/admin/users Implemented

Get paginated list of all users with filtering and sorting options

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "query": {
        "page": 1,
        "limit": 20,
        "filter": "all",
        "sort_by": "created_at",
        "order": "desc"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "data": [
            {
                "id": 1,
                "name": "Test User",
                "username": "testuser9666",
                "email": "test1688@example.com",
                "is_active": 1,
                "is_banned": 0,
                "created_at": "2025-12-29T19:33:11.000000Z",
                "last_login": null
            }
        ],
        "pagination": {
            "total": 13,
            "page": 1,
            "limit": 20,
            "pages": 1
        }
    }
}
DELETE /api/v1/admin/users/{id} Implemented

Delete a user from the platform permanently

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "parameters": {
        "id": "User ID (required)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "User deleted successfully"
    }
}
GET /api/v1/admin/users/{id} Implemented

Get detailed information about a specific user

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "parameters": {
        "id": "User ID (required)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "data": {
            "id": 1,
            "name": "Test User",
            "username": "testuser9666",
            "email": "test1688@example.com",
            "phone": null,
            "is_active": 1,
            "is_banned": 0,
            "avatar": null,
            "bio": null,
            "created_at": "2025-12-29T19:33:11.000000Z",
            "last_login": null
        }
    }
}
PUT /api/v1/admin/users/{id} Implemented

Update user information

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx",
        "Content-Type": "application\/json"
    },
    "parameters": {
        "id": "User ID (required)"
    },
    "body": {
        "name": "Updated Name",
        "email": "newemail@example.com",
        "phone": "1234567890",
        "bio": "User bio",
        "is_active": 1
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "User updated successfully",
        "data": {
            "id": 1,
            "name": "Updated Name",
            "email": "newemail@example.com"
        }
    }
}
POST /api/v1/admin/users/{id}/ban Implemented

Ban a user from the platform

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx",
        "Content-Type": "application\/json"
    },
    "parameters": {
        "id": "User ID (required)"
    },
    "body": {
        "reason": "Violation of terms of service"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "User banned successfully",
        "data": {
            "id": 2,
            "username": "testuser7396",
            "is_banned": true
        }
    }
}
POST /api/v1/admin/users/{id}/unban Implemented

Unban a previously banned user

Request
{
    "headers": {
        "Authorization": "Bearer admin-token-xxx"
    },
    "parameters": {
        "id": "User ID (required)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "User unbanned successfully",
        "data": {
            "id": 2,
            "username": "testuser7396",
            "is_banned": false
        }
    }
}
GET /api/v1/admin/verification/all Implemented

View complete verification history - all pending, approved, and rejected requests. Provides audit trail of all verification activities.

Request
{
    "query_params": {
        "page": 1,
        "limit": 20
    }
}
Response
{
    "status": "success",
    "data": [
        {
            "id": 1,
            "request_id": 1,
            "user": {
                "id": 1,
                "username": "testuser",
                "name": "Test User",
                "email": "test@example.com"
            },
            "type": "identity",
            "submitted_at": "2025-12-30T12:07:56Z",
            "reviewed_at": "2025-12-30T12:09:13Z",
            "status": "approved"
        },
        {
            "id": 2,
            "request_id": 2,
            "user": {
                "id": 1,
                "username": "testuser",
                "name": "Test User",
                "email": "test@example.com"
            },
            "type": "business",
            "submitted_at": "2025-12-30T12:09:28Z",
            "reviewed_at": "2025-12-30T12:09:38Z",
            "rejection_reason": "Document not clear",
            "status": "rejected"
        }
    ],
    "pagination": {
        "total": 2,
        "page": 1,
        "limit": 20,
        "pages": 1
    }
}
GET /api/v1/admin/verification/approved Implemented

List all approved verification requests. Shows users who have been verified with their documents.

Request
{
    "query_params": {
        "page": 1,
        "limit": 20
    }
}
Response
{
    "status": "success",
    "data": [
        {
            "id": 1,
            "request_id": 1,
            "user": {
                "id": 1,
                "username": "testuser",
                "name": "Test User",
                "email": "test@example.com"
            },
            "type": "identity",
            "submitted_at": "2025-12-30T12:07:56Z",
            "reviewed_at": "2025-12-30T12:09:13Z",
            "status": "approved",
            "document_front": "https:\/\/s3.wasabisys.com\/craftrly\/identity-verification\/2025\/12\/30\/doc-xyz.png",
            "document_back": "https:\/\/s3.wasabisys.com\/craftrly\/identity-verification\/2025\/12\/30\/doc-abc.png",
            "selfie": "https:\/\/s3.wasabisys.com\/craftrly\/identity-verification\/2025\/12\/30\/doc-123.png"
        }
    ],
    "pagination": {
        "total": 1,
        "page": 1,
        "limit": 20,
        "pages": 1
    }
}
GET /api/v1/admin/verification/pending Implemented

List all pending verification requests awaiting admin review. Returns paginated results with user information.

Request
{
    "query_params": {
        "page": 1,
        "limit": 20
    }
}
Response
{
    "status": "success",
    "data": [
        {
            "id": 1,
            "request_id": 1,
            "user": {
                "id": 1,
                "username": "testuser9666",
                "name": "Test User",
                "email": "test1688@example.com"
            },
            "type": "identity",
            "submitted_at": "2025-12-30T12:07:56.000000Z",
            "status": "pending"
        }
    ],
    "pagination": {
        "total": 1,
        "page": 1,
        "limit": 20,
        "pages": 1
    }
}
GET /api/v1/admin/verification/rejected Implemented

List all rejected verification requests. Shows users whose verification was rejected and the rejection reason.

Request
{
    "query_params": {
        "page": 1,
        "limit": 20
    }
}
Response
{
    "status": "success",
    "data": [
        {
            "id": 2,
            "request_id": 2,
            "user": {
                "id": 1,
                "username": "testuser",
                "name": "Test User",
                "email": "test@example.com"
            },
            "type": "business",
            "submitted_at": "2025-12-30T12:09:28Z",
            "reviewed_at": "2025-12-30T12:09:38Z",
            "rejection_reason": "Document not clear enough, please resubmit with higher quality images",
            "status": "rejected"
        }
    ],
    "pagination": {
        "total": 1,
        "page": 1,
        "limit": 20,
        "pages": 1
    }
}
GET /api/v1/admin/verification/{id} Implemented

Get detailed information about a specific verification request including user info, documents, and review status.

Request
{
    "path_params": {
        "id": 1
    }
}
Response
{
    "status": "success",
    "data": {
        "request_id": 1,
        "user": {
            "id": 1,
            "username": "testuser",
            "name": "Test User"
        },
        "type": "identity",
        "full_name": "John Michael Doe",
        "document_type": "passport",
        "documents": {
            "front": "https:\/\/s3.wasabisys.com\/craftrly\/identity-verification\/2025\/12\/30\/doc-front.png",
            "back": "https:\/\/s3.wasabisys.com\/craftrly\/identity-verification\/2025\/12\/30\/doc-back.png",
            "selfie": "https:\/\/s3.wasabisys.com\/craftrly\/identity-verification\/2025\/12\/30\/doc-selfie.png"
        },
        "note": "Public speaker and tech blogger",
        "status": "pending",
        "submitted_at": "2025-12-30T12:07:56Z",
        "reviewed_at": null
    }
}
POST /api/v1/admin/verification/{id}/approve Implemented

Approve a verification request and grant the user a verified badge. Sets user.verified=true and adds verified_type badge.

Request
[]
Response
{
    "status": "success",
    "message": "Verification approved successfully",
    "data": {
        "status": "approved",
        "verified_at": "2025-12-30T12:09:14Z"
    }
}
POST /api/v1/admin/verification/{id}/reject Implemented

Reject a verification request and provide a reason. The user will see the rejection reason and can resubmit.

Request
{
    "reason": "Document not clear enough, please resubmit with higher quality images"
}
Response
{
    "status": "success",
    "message": "Verification rejected successfully",
    "data": {
        "status": "rejected",
        "reason": "Document not clear enough, please resubmit with higher quality images"
    }
}
POST /api/v1/auth/login Implemented

Authenticate an existing user and receive a personal access token

Request
{
    "headers": {
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "body": {
        "email": "john@example.com",
        "password": "Password123"
    }
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Login successful",
        "token": "9qT2XPu6juLYZGQ1HJt3PdsanO2ugEbGnq4LZSd39IqmFW2bolMjynchYAyl"
    }
}
POST /api/v1/auth/logout Implemented

Logout the authenticated user and invalidate their API token

Request
{
    "description": "No body required"
}
Response
{
    "description": "Returns a success message with logout confirmation",
    "example": {
        "status": "success",
        "message": "Logged out successfully"
    }
}
POST /api/v1/auth/register Implemented

Create a new user account and receive a personal access token for authentication

Request
{
    "headers": {
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "body": {
        "name": "John Doe",
        "username": "johndoe",
        "email": "john@example.com",
        "password": "Password123",
        "password_confirmation": "Password123"
    }
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Account created successfully",
        "token": "8LKNCrTdYhyZkFiowtadpJC7hMFVLABn3QWWYOW2srbSgMPXfiCxsV84twTs"
    }
}
GET /api/v1/feed Implemented

Retrieve a feed of posts from users

Request
{
    "headers": {
        "Accept": "application\/json"
    },
    "parameters": {
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": [
            {
                "id": 15,
                "user_id": 8,
                "user": {
                    "id": 8,
                    "name": "John Doe",
                    "username": "johndoe",
                    "avatar": null
                },
                "content": "Just finished an amazing hike!",
                "image": "https:\/\/example.com\/image.jpg",
                "location": "Mountain Peak, Colorado",
                "likes": 5,
                "comments": 2,
                "created_at": "2025-12-29T10:30:00Z"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
GET /api/v1/matches Implemented

Retrieve list of matched users

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Accept": "application\/json"
    },
    "parameters": {
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": [
            {
                "id": 5,
                "name": "Jane Smith",
                "username": "janesmith",
                "avatar": "https:\/\/example.com\/jane.jpg",
                "matched_at": "2025-12-28T15:30:00Z"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
GET /api/v1/me Implemented

Retrieve the authenticated user's profile information

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Accept": "application\/json"
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": {
            "id": 8,
            "name": "John Doe",
            "username": "johndoe",
            "email": "john@example.com",
            "avatar": null,
            "bio": "Software developer and coffee enthusiast",
            "verified": false,
            "followers": 0,
            "following": 0
        }
    }
}
PUT /api/v1/me Implemented

Update the authenticated user's profile information

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "body": {
        "name": "Jane Doe",
        "avatar": "https:\/\/example.com\/avatar.jpg",
        "bio": "A passionate dating app user"
    }
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Profile updated successfully",
        "data": {
            "id": 8,
            "name": "Jane Doe",
            "username": "johndoe",
            "email": "john@example.com",
            "avatar": "https:\/\/example.com\/avatar.jpg",
            "bio": "A passionate dating app user",
            "followers": 0,
            "following": 0
        }
    }
}
POST /api/v1/media/avatar Implemented

Upload an avatar image for the authenticated user profile

Request
{
    "headers": {
        "Authorization": "Bearer token-xxx",
        "Content-Type": "multipart\/form-data"
    },
    "body": {
        "avatar": "file (max 2MB, image format only)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Avatar uploaded successfully",
        "data": {
            "url": "https:\/\/s3.us-central-1.wasabisys.com\/craftrly\/avatars\/1\/avatar_xyz123.jpg",
            "user_id": 1
        }
    }
}
POST /api/v1/media/cover Implemented

Upload a cover image for the authenticated user's profile header

Request
{
    "headers": {
        "Authorization": "Bearer token-xxx",
        "Content-Type": "multipart\/form-data"
    },
    "body": {
        "cover": "file (max 5MB, image format only)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Cover image uploaded successfully",
        "data": {
            "url": "https:\/\/s3.us-central-1.wasabisys.com\/craftrly\/covers\/1\/cover_xyz123.jpg",
            "user_id": 1
        }
    }
}
POST /api/v1/media/delete Implemented

Delete a media file from storage (ownership verification required)

Request
{
    "headers": {
        "Authorization": "Bearer token-xxx",
        "Content-Type": "application\/json"
    },
    "body": {
        "file_url": "string (full S3 URL of file to delete)"
    },
    "example": {
        "file_url": "https:\/\/s3.us-central-1.wasabisys.com\/craftrly\/posts\/1\/post_xyz123.jpg"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "File deleted successfully",
        "data": {
            "deleted_file": "https:\/\/s3.us-central-1.wasabisys.com\/craftrly\/posts\/1\/post_xyz123.jpg"
        }
    }
}
POST /api/v1/media/post-image Implemented

Upload an image for a post to Wasabi S3 object storage

Request
{
    "headers": {
        "Authorization": "Bearer token-xxx",
        "Content-Type": "multipart\/form-data"
    },
    "body": {
        "image": "file (max 5MB, image format only)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Image uploaded successfully",
        "data": {
            "url": "https:\/\/s3.us-central-1.wasabisys.com\/craftrly\/posts\/1\/abc123xyz.jpg",
            "size": 2048576
        }
    }
}
POST /api/v1/media/post-video Implemented

Upload a video file for a post (supports MP4, WebM, MOV, AVI, MKV)

Request
{
    "headers": {
        "Authorization": "Bearer token-xxx",
        "Content-Type": "multipart\/form-data"
    },
    "body": {
        "video": "file (max 100MB, video format only)"
    },
    "supportedFormats": [
        "mp4",
        "webm",
        "mov",
        "avi",
        "mkv"
    ]
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Video uploaded successfully",
        "data": {
            "url": "https:\/\/s3.us-central-1.wasabisys.com\/craftrly\/videos\/1\/video_xyz123.mp4",
            "size": 52428800,
            "status": "pending"
        }
    }
}
POST /api/v1/media/story Implemented

Upload a story image with optional caption and configurable expiration time

Request
{
    "headers": {
        "Authorization": "Bearer token-xxx",
        "Content-Type": "multipart\/form-data"
    },
    "body": {
        "image": "file (max 5MB, image format only)",
        "caption": "string (optional, max 500 characters)",
        "duration": "integer (optional, minutes until expiration, default 1440 - 24 hours)"
    }
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Story created successfully",
        "data": {
            "id": 5,
            "user_id": 1,
            "image": "https:\/\/s3.us-central-1.wasabisys.com\/craftrly\/stories\/1\/story_xyz123.jpg",
            "caption": "Beautiful sunset",
            "expires_at": "2024-12-31T18:25:00Z",
            "is_deleted": false,
            "created_at": "2024-12-30T18:25:00Z"
        }
    }
}
POST /api/v1/media/story-video Implemented

Upload a video file for a story with automatic expiration (supports MP4, WebM, MOV, AVI, MKV)

Request
{
    "headers": {
        "Authorization": "Bearer token-xxx",
        "Content-Type": "multipart\/form-data"
    },
    "body": {
        "video": "file (max 100MB, video format only)",
        "caption": "string (optional, max 500 characters)",
        "duration": "integer (optional, minutes until expiration, default 1440 - 24 hours)"
    },
    "supportedFormats": [
        "mp4",
        "webm",
        "mov",
        "avi",
        "mkv"
    ]
}
Response
{
    "status": 200,
    "body": {
        "status": "success",
        "message": "Video story created successfully",
        "data": {
            "id": 1,
            "url": "https:\/\/s3.us-central-1.wasabisys.com\/craftrly\/video-stories\/1\/video_xyz123.mp4",
            "media_type": "video",
            "expires_at": "2024-12-31T18:25:00Z",
            "size": 52428800
        }
    }
}
POST /api/v1/messages Implemented

Send a message to another user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "body": {
        "recipient_id": 5,
        "content": "Hey! How are you doing?"
    }
}
Response
{
    "status": 201,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Message sent successfully",
        "data": {
            "id": 123,
            "sender_id": 8,
            "recipient_id": 5,
            "content": "Hey! How are you doing?",
            "read": false,
            "created_at": "2025-12-29T10:40:00Z"
        }
    }
}
GET /api/v1/messages/{user_id} Implemented

Retrieve conversation history with a specific user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Accept": "application\/json"
    },
    "parameters": {
        "user_id": 5,
        "page": 1,
        "limit": 30
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": [
            {
                "id": 122,
                "sender_id": 5,
                "recipient_id": 8,
                "content": "Hi there!",
                "read": true,
                "created_at": "2025-12-29T09:15:00Z"
            },
            {
                "id": 123,
                "sender_id": 8,
                "recipient_id": 5,
                "content": "Hey! How are you doing?",
                "read": false,
                "created_at": "2025-12-29T10:40:00Z"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 30,
            "total": 2,
            "pages": 1
        }
    }
}
GET /api/v1/my-posts Implemented

Retrieve all posts created by the authenticated user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Accept": "application\/json"
    },
    "parameters": {
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": [
            {
                "id": 1,
                "user_id": 8,
                "content": "My first post",
                "image": null,
                "location": null,
                "likes": 0,
                "comments": 0,
                "created_at": "2025-12-29T10:30:00Z"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
GET /api/v1/my/followers Implemented

Retrieve the authenticated user's followers list

Request
{
    "headers": {
        "Accept": "application\/json",
        "Authorization": "Bearer {token}"
    },
    "parameters": {
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "username": "alice_4446",
        "followers_count": 1,
        "data": [
            {
                "id": 13,
                "name": "Bob Smith",
                "username": "bob_5110",
                "avatar": null
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
GET /api/v1/my/following Implemented

Retrieve the authenticated user's following list

Request
{
    "headers": {
        "Accept": "application\/json",
        "Authorization": "Bearer {token}"
    },
    "parameters": {
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "username": "alice_4446",
        "following_count": 2,
        "data": [
            {
                "id": 13,
                "name": "Bob Smith",
                "username": "bob_5110",
                "avatar": null
            },
            {
                "id": 14,
                "name": "Charlie Davis",
                "username": "charlie_5111",
                "avatar": null
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 2,
            "pages": 1
        }
    }
}
GET /api/v1/notifications Implemented

Retrieve user notifications

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Accept": "application\/json"
    },
    "parameters": {
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": [
            {
                "id": 1,
                "user_id": 8,
                "type": "like",
                "message": "Jane Smith liked your post",
                "data": {
                    "post_id": 15,
                    "user_id": 5
                },
                "read": false,
                "created_at": "2025-12-29T11:00:00Z"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
POST /api/v1/otp/resend Implemented

Request a new OTP code if the previous one expired or was not received

Request
{
    "description": "Request a new OTP",
    "example": {
        "email": "user@example.com"
    }
}
Response
{
    "description": "Returns success message with new OTP sent",
    "example": {
        "status": "success",
        "message": "New OTP sent successfully",
        "email": "user@example.com",
        "expires_in": "10 minutes"
    }
}
POST /api/v1/otp/send Implemented

Send a One-Time Password (OTP) to the specified email address via Gmail SMTP

Request
{
    "description": "Send OTP to email",
    "example": {
        "email": "user@example.com"
    }
}
Response
{
    "description": "Returns success message with email and expiry time",
    "example": {
        "status": "success",
        "message": "OTP sent successfully to your email",
        "email": "user@example.com",
        "expires_in": "10 minutes"
    }
}
GET /api/v1/otp/status Implemented

Check the current status of an OTP for a given email address

Request
{
    "description": "Check OTP status for an email"
}
Response
{
    "description": "Returns the current status of OTP verification",
    "example_pending": {
        "status": "pending",
        "message": "Waiting for OTP verification",
        "email": "user@example.com",
        "attempts_used": 2,
        "attempts_remaining": 3,
        "verified": false
    },
    "example_verified": {
        "status": "verified",
        "message": "Email is already verified",
        "verified": true
    },
    "example_expired": {
        "status": "expired",
        "message": "OTP has expired",
        "verified": false
    },
    "example_not_requested": {
        "status": "not_requested",
        "message": "No OTP has been requested for this email"
    }
}
POST /api/v1/otp/verify Implemented

Verify the One-Time Password sent to an email address

Request
{
    "description": "Verify OTP code",
    "example": {
        "email": "user@example.com",
        "otp": "123456"
    }
}
Response
{
    "description": "Returns success message when OTP is verified",
    "example": {
        "status": "success",
        "message": "OTP verified successfully",
        "email": "user@example.com",
        "verified": true
    }
}
POST /api/v1/posts Implemented

Create a new post for the authenticated user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "body": {
        "content": "Just finished an amazing hike!",
        "image": "https:\/\/example.com\/image.jpg",
        "location": "Mountain Peak, Colorado"
    }
}
Response
{
    "status": 201,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Post created successfully",
        "data": {
            "id": 15,
            "user_id": 8,
            "content": "Just finished an amazing hike!",
            "image": "https:\/\/example.com\/image.jpg",
            "location": "Mountain Peak, Colorado",
            "likes": 0,
            "comments": 0,
            "created_at": "2025-12-29T10:30:00Z"
        }
    }
}
GET /api/v1/posts/{id} Implemented

Retrieve detailed information about a specific post

Request
{
    "headers": {
        "Accept": "application\/json"
    },
    "parameters": {
        "id": 15
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": {
            "id": 15,
            "user_id": 8,
            "user": {
                "id": 8,
                "name": "John Doe",
                "username": "johndoe",
                "avatar": null
            },
            "content": "Sample post content",
            "image": null,
            "location": null,
            "likes": 5,
            "comments": 2,
            "created_at": "2025-12-29T10:30:00Z"
        }
    }
}
POST /api/v1/posts/{id}/comments Implemented

Add a comment to a post

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "parameters": {
        "id": 15
    },
    "body": {
        "content": "This looks amazing! I want to go there too!"
    }
}
Response
{
    "status": 201,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Comment added successfully",
        "data": {
            "id": 42,
            "post_id": 15,
            "user_id": 8,
            "content": "This looks amazing! I want to go there too!",
            "created_at": "2025-12-29T10:35:00Z"
        }
    }
}
POST /api/v1/posts/{id}/like Implemented

Like or unlike a post

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "parameters": {
        "id": 15
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Like added successfully",
        "data": {
            "post_id": 15,
            "liked": true,
            "total_likes": 6
        }
    }
}
POST /api/v1/stories Implemented

Create a new story (ephemeral post that expires after 24 hours)

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "body": {
        "content": "Beautiful sunset!",
        "image": "https:\/\/example.com\/sunset.jpg"
    }
}
Response
{
    "status": 201,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Story created successfully",
        "data": {
            "id": 8,
            "user_id": 8,
            "content": "Beautiful sunset!",
            "image": "https:\/\/example.com\/sunset.jpg",
            "views": 0,
            "expires_at": "2025-12-30T10:45:00Z",
            "created_at": "2025-12-29T10:45:00Z"
        }
    }
}
GET /api/v1/stories/feed Implemented

Retrieve stories feed from all users

Request
{
    "headers": {
        "Accept": "application\/json"
    },
    "parameters": {
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": [
            {
                "id": 8,
                "user_id": 8,
                "user": {
                    "id": 8,
                    "name": "John Doe",
                    "username": "johndoe",
                    "avatar": null
                },
                "content": "Beautiful sunset!",
                "image": "https:\/\/example.com\/sunset.jpg",
                "views": 3,
                "expires_at": "2025-12-30T10:45:00Z",
                "created_at": "2025-12-29T10:45:00Z"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
POST /api/v1/stories/{id}/view Implemented

Mark a story as viewed by the authenticated user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "parameters": {
        "id": 8
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "Story view recorded",
        "data": {
            "story_id": 8,
            "user_id": 8,
            "total_views": 4
        }
    }
}
GET /api/v1/users/{id}/match-status Implemented

Get match status between authenticated user and another user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Accept": "application\/json"
    },
    "parameters": {
        "id": 5
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "data": {
            "user_id": 5,
            "status": "matched",
            "matched_at": "2025-12-28T15:30:00Z"
        }
    }
}
GET /api/v1/users/{username} Implemented

Retrieve a public user profile by username

Request
{
    "headers": {
        "Accept": "application\/json"
    },
    "parameters": {
        "username": "johndoe"
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "id": 8,
        "name": "John Doe",
        "username": "johndoe",
        "avatar": "https:\/\/example.com\/avatar.jpg",
        "followers": 42,
        "following": 15
    }
}
POST /api/v1/users/{username}/follow Implemented

Follow a user by username

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "parameters": {
        "username": "johndoe"
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "User followed successfully",
        "data": {
            "follower_id": 8,
            "followed_id": 5,
            "username": "johndoe",
            "name": "John Doe",
            "is_following": true
        }
    }
}
GET /api/v1/users/{username}/followers Implemented

Retrieve list of users following a specific user

Request
{
    "headers": {
        "Accept": "application\/json"
    },
    "parameters": {
        "username": "johndoe",
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "username": "johndoe",
        "data": [
            {
                "id": 8,
                "name": "Jane Smith",
                "username": "janesmith",
                "avatar": null
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
GET /api/v1/users/{username}/following Implemented

Retrieve list of users that a specific user is following

Request
{
    "headers": {
        "Accept": "application\/json"
    },
    "parameters": {
        "username": "johndoe",
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "username": "johndoe",
        "data": [
            {
                "id": 5,
                "name": "Jane Doe",
                "username": "janedoe",
                "avatar": null
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
GET /api/v1/users/{username}/is-following Implemented

Check if authenticated user is following another user

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Accept": "application\/json"
    },
    "parameters": {
        "username": "johndoe"
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "username": "johndoe",
        "is_following": true
    }
}
GET /api/v1/users/{username}/posts Implemented

Retrieve all public posts from a specific user by username

Request
{
    "headers": {
        "Accept": "application\/json"
    },
    "parameters": {
        "username": "johndoe",
        "page": 1,
        "limit": 20
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "user": {
            "username": "johndoe",
            "name": "John Doe",
            "avatar": null
        },
        "data": [
            {
                "id": 1,
                "user_id": 8,
                "content": "User public post",
                "image": null,
                "location": null,
                "likes": 3,
                "comments": 1,
                "created_at": "2025-12-29T10:30:00Z"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 1,
            "pages": 1
        }
    }
}
POST /api/v1/users/{username}/unfollow Implemented

Unfollow a user by username

Request
{
    "headers": {
        "Authorization": "Bearer {token}",
        "Content-Type": "application\/json",
        "Accept": "application\/json"
    },
    "parameters": {
        "username": "johndoe"
    },
    "body": null
}
Response
{
    "status": 200,
    "headers": {
        "Content-Type": "application\/json"
    },
    "body": {
        "status": "success",
        "message": "User unfollowed successfully",
        "data": {
            "follower_id": 8,
            "followed_id": 5,
            "username": "johndoe",
            "name": "John Doe",
            "is_following": false
        }
    }
}
DELETE /api/v1/verification/cancel Implemented

Cancel a pending verification request. Removes all uploaded documents and resets verification status. Only works for pending requests.

Request
[]
Response
{
    "status": "cancelled",
    "message": "Verification request cancelled successfully"
}
POST /api/v1/verification/request Implemented

Submit a verification request with identity documents. User must provide documents (front, back, selfie) as base64 data URLs.

Request
{
    "type": "identity",
    "full_name": "John Michael Doe",
    "document_type": "passport",
    "document_front": "data:image\/png;base64,iVBORw0KGgoAAAANS...",
    "document_back": "data:image\/png;base64,iVBORw0KGgoAAAANS...",
    "selfie": "data:image\/png;base64,iVBORw0KGgoAAAANS...",
    "note": "Public speaker and tech blogger"
}
Response
{
    "status": "submitted",
    "message": "Verification request submitted successfully",
    "request_id": 1
}
GET /api/v1/verification/status Implemented

Get the current verification status of the authenticated user. Returns pending, approved, or rejected status with details.

Request
[]
Response
{
    "verified": false,
    "status": "pending",
    "type": "identity",
    "submitted_at": "2025-12-30T12:07:56.000000Z",
    "reviewed_at": null,
    "rejection_reason": null
}