API Endpoints
/api/v1/account/privacy
Implemented
Retrieve privacy settings for authenticated user
{
"headers": {
"Authorization": "Bearer {token}",
"Accept": "application\/json"
},
"body": null
}
{
"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
}
}
}
/api/v1/account/privacy
Implemented
Update privacy settings for authenticated user
{
"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
}
}
{
"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
}
}
}
/api/v1/admin/dashboard
Implemented
Get platform statistics and health metrics
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
}
}
{
"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
}
}
}
}
/api/v1/admin/flagged-content
Implemented
Get list of all flagged posts that need review
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"query": {
"page": 1,
"limit": 20
}
}
{
"status": 200,
"body": {
"status": "success",
"data": [],
"pagination": {
"total": 0,
"page": 1,
"limit": 20,
"pages": 0
}
}
}
/api/v1/admin/login
Implemented
Authenticate as admin user and receive admin token
{
"headers": {
"Content-Type": "application\/json"
},
"body": {
"email": "admin@dateapi.com",
"password": "admin123456"
}
}
{
"status": 200,
"body": {
"status": "success",
"message": "Admin login successful",
"token": "admin-token-8d08f70f8b79d30ab42ee5021259cc33b13537dbb20ac05fa69df1db214b688b"
}
}
/api/v1/admin/posts
Implemented
Get paginated list of all posts with filtering options
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"query": {
"page": 1,
"limit": 20,
"sort_by": "created_at",
"order": "desc"
}
}
{
"status": 200,
"body": {
"status": "success",
"data": [],
"pagination": {
"total": 0,
"page": 1,
"limit": 20,
"pages": 0
}
}
}
/api/v1/admin/posts/{id}
Implemented
Delete a post from the platform
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"parameters": {
"id": "Post ID (required)"
}
}
{
"status": 200,
"body": {
"status": "success",
"message": "Post deleted successfully"
}
}
/api/v1/admin/posts/{id}
Implemented
Get detailed information about a specific post
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"parameters": {
"id": "Post ID (required)"
}
}
{
"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"
}
}
}
/api/v1/admin/posts/{id}/flag
Implemented
Flag a post for review due to policy violations
{
"headers": {
"Authorization": "Bearer admin-token-xxx",
"Content-Type": "application\/json"
},
"parameters": {
"id": "Post ID (required)"
},
"body": {
"reason": "Inappropriate content"
}
}
{
"status": 200,
"body": {
"status": "success",
"message": "Post flagged successfully",
"data": {
"id": 1,
"is_flagged": true,
"flag_reason": "Inappropriate content"
}
}
}
/api/v1/admin/posts/{id}/unflag
Implemented
Remove flag from a post after review
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"parameters": {
"id": "Post ID (required)"
}
}
{
"status": 200,
"body": {
"status": "success",
"message": "Post unflagged successfully",
"data": {
"id": 1,
"is_flagged": false,
"flag_reason": null
}
}
}
/api/v1/admin/settings
Implemented
Get current platform system settings and configuration
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
}
}
{
"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
}
}
}
/api/v1/admin/statistics
Implemented
Get platform statistics for a specific period
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"query": {
"period": "month"
}
}
{
"status": 200,
"body": {
"status": "success",
"period": "month",
"data": {
"new_users": 13,
"new_posts": 0,
"active_users": 13,
"total_users": 13,
"total_posts": 0
}
}
}
/api/v1/admin/users
Implemented
Get paginated list of all users with filtering and sorting options
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"query": {
"page": 1,
"limit": 20,
"filter": "all",
"sort_by": "created_at",
"order": "desc"
}
}
{
"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
}
}
}
/api/v1/admin/users/{id}
Implemented
Delete a user from the platform permanently
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"parameters": {
"id": "User ID (required)"
}
}
{
"status": 200,
"body": {
"status": "success",
"message": "User deleted successfully"
}
}
/api/v1/admin/users/{id}
Implemented
Get detailed information about a specific user
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"parameters": {
"id": "User ID (required)"
}
}
{
"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
}
}
}
/api/v1/admin/users/{id}
Implemented
Update user information
{
"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
}
}
{
"status": 200,
"body": {
"status": "success",
"message": "User updated successfully",
"data": {
"id": 1,
"name": "Updated Name",
"email": "newemail@example.com"
}
}
}
/api/v1/admin/users/{id}/ban
Implemented
Ban a user from the platform
{
"headers": {
"Authorization": "Bearer admin-token-xxx",
"Content-Type": "application\/json"
},
"parameters": {
"id": "User ID (required)"
},
"body": {
"reason": "Violation of terms of service"
}
}
{
"status": 200,
"body": {
"status": "success",
"message": "User banned successfully",
"data": {
"id": 2,
"username": "testuser7396",
"is_banned": true
}
}
}
/api/v1/admin/users/{id}/unban
Implemented
Unban a previously banned user
{
"headers": {
"Authorization": "Bearer admin-token-xxx"
},
"parameters": {
"id": "User ID (required)"
}
}
{
"status": 200,
"body": {
"status": "success",
"message": "User unbanned successfully",
"data": {
"id": 2,
"username": "testuser7396",
"is_banned": false
}
}
}
/api/v1/admin/verification/all
Implemented
View complete verification history - all pending, approved, and rejected requests. Provides audit trail of all verification activities.
{
"query_params": {
"page": 1,
"limit": 20
}
}
{
"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
}
}
/api/v1/admin/verification/approved
Implemented
List all approved verification requests. Shows users who have been verified with their documents.
{
"query_params": {
"page": 1,
"limit": 20
}
}
{
"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
}
}
/api/v1/admin/verification/pending
Implemented
List all pending verification requests awaiting admin review. Returns paginated results with user information.
{
"query_params": {
"page": 1,
"limit": 20
}
}
{
"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
}
}
/api/v1/admin/verification/rejected
Implemented
List all rejected verification requests. Shows users whose verification was rejected and the rejection reason.
{
"query_params": {
"page": 1,
"limit": 20
}
}
{
"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
}
}
/api/v1/admin/verification/{id}
Implemented
Get detailed information about a specific verification request including user info, documents, and review status.
{
"path_params": {
"id": 1
}
}
{
"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
}
}
/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.
[]
{
"status": "success",
"message": "Verification approved successfully",
"data": {
"status": "approved",
"verified_at": "2025-12-30T12:09:14Z"
}
}
/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.
{
"reason": "Document not clear enough, please resubmit with higher quality images"
}
{
"status": "success",
"message": "Verification rejected successfully",
"data": {
"status": "rejected",
"reason": "Document not clear enough, please resubmit with higher quality images"
}
}
/api/v1/auth/login
Implemented
Authenticate an existing user and receive a personal access token
{
"headers": {
"Content-Type": "application\/json",
"Accept": "application\/json"
},
"body": {
"email": "john@example.com",
"password": "Password123"
}
}
{
"status": 200,
"headers": {
"Content-Type": "application\/json"
},
"body": {
"status": "success",
"message": "Login successful",
"token": "9qT2XPu6juLYZGQ1HJt3PdsanO2ugEbGnq4LZSd39IqmFW2bolMjynchYAyl"
}
}
/api/v1/auth/logout
Implemented
Logout the authenticated user and invalidate their API token
{
"description": "No body required"
}
{
"description": "Returns a success message with logout confirmation",
"example": {
"status": "success",
"message": "Logged out successfully"
}
}
/api/v1/auth/register
Implemented
Create a new user account and receive a personal access token for authentication
{
"headers": {
"Content-Type": "application\/json",
"Accept": "application\/json"
},
"body": {
"name": "John Doe",
"username": "johndoe",
"email": "john@example.com",
"password": "Password123",
"password_confirmation": "Password123"
}
}
{
"status": 200,
"headers": {
"Content-Type": "application\/json"
},
"body": {
"status": "success",
"message": "Account created successfully",
"token": "8LKNCrTdYhyZkFiowtadpJC7hMFVLABn3QWWYOW2srbSgMPXfiCxsV84twTs"
}
}
/api/v1/feed
Implemented
Retrieve a feed of posts from users
{
"headers": {
"Accept": "application\/json"
},
"parameters": {
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/matches
Implemented
Retrieve list of matched users
{
"headers": {
"Authorization": "Bearer {token}",
"Accept": "application\/json"
},
"parameters": {
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/me
Implemented
Retrieve the authenticated user's profile information
{
"headers": {
"Authorization": "Bearer {token}",
"Accept": "application\/json"
},
"body": null
}
{
"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
}
}
}
/api/v1/me
Implemented
Update the authenticated user's profile information
{
"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"
}
}
{
"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
}
}
}
/api/v1/media/avatar
Implemented
Upload an avatar image for the authenticated user profile
{
"headers": {
"Authorization": "Bearer token-xxx",
"Content-Type": "multipart\/form-data"
},
"body": {
"avatar": "file (max 2MB, image format only)"
}
}
{
"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
}
}
}
/api/v1/media/cover
Implemented
Upload a cover image for the authenticated user's profile header
{
"headers": {
"Authorization": "Bearer token-xxx",
"Content-Type": "multipart\/form-data"
},
"body": {
"cover": "file (max 5MB, image format only)"
}
}
{
"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
}
}
}
/api/v1/media/delete
Implemented
Delete a media file from storage (ownership verification required)
{
"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"
}
}
{
"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"
}
}
}
/api/v1/media/post-image
Implemented
Upload an image for a post to Wasabi S3 object storage
{
"headers": {
"Authorization": "Bearer token-xxx",
"Content-Type": "multipart\/form-data"
},
"body": {
"image": "file (max 5MB, image format only)"
}
}
{
"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
}
}
}
/api/v1/media/post-video
Implemented
Upload a video file for a post (supports MP4, WebM, MOV, AVI, MKV)
{
"headers": {
"Authorization": "Bearer token-xxx",
"Content-Type": "multipart\/form-data"
},
"body": {
"video": "file (max 100MB, video format only)"
},
"supportedFormats": [
"mp4",
"webm",
"mov",
"avi",
"mkv"
]
}
{
"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"
}
}
}
/api/v1/media/story
Implemented
Upload a story image with optional caption and configurable expiration time
{
"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)"
}
}
{
"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"
}
}
}
/api/v1/media/story-video
Implemented
Upload a video file for a story with automatic expiration (supports MP4, WebM, MOV, AVI, MKV)
{
"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"
]
}
{
"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
}
}
}
/api/v1/messages
Implemented
Send a message to another user
{
"headers": {
"Authorization": "Bearer {token}",
"Content-Type": "application\/json",
"Accept": "application\/json"
},
"body": {
"recipient_id": 5,
"content": "Hey! How are you doing?"
}
}
{
"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"
}
}
}
/api/v1/messages/{user_id}
Implemented
Retrieve conversation history with a specific user
{
"headers": {
"Authorization": "Bearer {token}",
"Accept": "application\/json"
},
"parameters": {
"user_id": 5,
"page": 1,
"limit": 30
},
"body": null
}
{
"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
}
}
}
/api/v1/my-posts
Implemented
Retrieve all posts created by the authenticated user
{
"headers": {
"Authorization": "Bearer {token}",
"Accept": "application\/json"
},
"parameters": {
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/my/followers
Implemented
Retrieve the authenticated user's followers list
{
"headers": {
"Accept": "application\/json",
"Authorization": "Bearer {token}"
},
"parameters": {
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/my/following
Implemented
Retrieve the authenticated user's following list
{
"headers": {
"Accept": "application\/json",
"Authorization": "Bearer {token}"
},
"parameters": {
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/notifications
Implemented
Retrieve user notifications
{
"headers": {
"Authorization": "Bearer {token}",
"Accept": "application\/json"
},
"parameters": {
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/otp/resend
Implemented
Request a new OTP code if the previous one expired or was not received
{
"description": "Request a new OTP",
"example": {
"email": "user@example.com"
}
}
{
"description": "Returns success message with new OTP sent",
"example": {
"status": "success",
"message": "New OTP sent successfully",
"email": "user@example.com",
"expires_in": "10 minutes"
}
}
/api/v1/otp/send
Implemented
Send a One-Time Password (OTP) to the specified email address via Gmail SMTP
{
"description": "Send OTP to email",
"example": {
"email": "user@example.com"
}
}
{
"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"
}
}
/api/v1/otp/status
Implemented
Check the current status of an OTP for a given email address
{
"description": "Check OTP status for an email"
}
{
"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"
}
}
/api/v1/otp/verify
Implemented
Verify the One-Time Password sent to an email address
{
"description": "Verify OTP code",
"example": {
"email": "user@example.com",
"otp": "123456"
}
}
{
"description": "Returns success message when OTP is verified",
"example": {
"status": "success",
"message": "OTP verified successfully",
"email": "user@example.com",
"verified": true
}
}
/api/v1/posts
Implemented
Create a new post for the authenticated user
{
"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"
}
}
{
"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"
}
}
}
/api/v1/posts/{id}
Implemented
Retrieve detailed information about a specific post
{
"headers": {
"Accept": "application\/json"
},
"parameters": {
"id": 15
},
"body": null
}
{
"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"
}
}
}
/api/v1/posts/{id}/comments
Implemented
Add a comment to a post
{
"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!"
}
}
{
"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"
}
}
}
/api/v1/posts/{id}/like
Implemented
Like or unlike a post
{
"headers": {
"Authorization": "Bearer {token}",
"Content-Type": "application\/json",
"Accept": "application\/json"
},
"parameters": {
"id": 15
},
"body": null
}
{
"status": 200,
"headers": {
"Content-Type": "application\/json"
},
"body": {
"status": "success",
"message": "Like added successfully",
"data": {
"post_id": 15,
"liked": true,
"total_likes": 6
}
}
}
/api/v1/stories
Implemented
Create a new story (ephemeral post that expires after 24 hours)
{
"headers": {
"Authorization": "Bearer {token}",
"Content-Type": "application\/json",
"Accept": "application\/json"
},
"body": {
"content": "Beautiful sunset!",
"image": "https:\/\/example.com\/sunset.jpg"
}
}
{
"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"
}
}
}
/api/v1/stories/feed
Implemented
Retrieve stories feed from all users
{
"headers": {
"Accept": "application\/json"
},
"parameters": {
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/stories/{id}/view
Implemented
Mark a story as viewed by the authenticated user
{
"headers": {
"Authorization": "Bearer {token}",
"Content-Type": "application\/json",
"Accept": "application\/json"
},
"parameters": {
"id": 8
},
"body": null
}
{
"status": 200,
"headers": {
"Content-Type": "application\/json"
},
"body": {
"status": "success",
"message": "Story view recorded",
"data": {
"story_id": 8,
"user_id": 8,
"total_views": 4
}
}
}
/api/v1/users/{id}/match-status
Implemented
Get match status between authenticated user and another user
{
"headers": {
"Authorization": "Bearer {token}",
"Accept": "application\/json"
},
"parameters": {
"id": 5
},
"body": null
}
{
"status": 200,
"headers": {
"Content-Type": "application\/json"
},
"body": {
"status": "success",
"data": {
"user_id": 5,
"status": "matched",
"matched_at": "2025-12-28T15:30:00Z"
}
}
}
/api/v1/users/{username}
Implemented
Retrieve a public user profile by username
{
"headers": {
"Accept": "application\/json"
},
"parameters": {
"username": "johndoe"
},
"body": null
}
{
"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
}
}
/api/v1/users/{username}/follow
Implemented
Follow a user by username
{
"headers": {
"Authorization": "Bearer {token}",
"Content-Type": "application\/json",
"Accept": "application\/json"
},
"parameters": {
"username": "johndoe"
},
"body": null
}
{
"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
}
}
}
/api/v1/users/{username}/followers
Implemented
Retrieve list of users following a specific user
{
"headers": {
"Accept": "application\/json"
},
"parameters": {
"username": "johndoe",
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/users/{username}/following
Implemented
Retrieve list of users that a specific user is following
{
"headers": {
"Accept": "application\/json"
},
"parameters": {
"username": "johndoe",
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/users/{username}/is-following
Implemented
Check if authenticated user is following another user
{
"headers": {
"Authorization": "Bearer {token}",
"Accept": "application\/json"
},
"parameters": {
"username": "johndoe"
},
"body": null
}
{
"status": 200,
"headers": {
"Content-Type": "application\/json"
},
"body": {
"status": "success",
"username": "johndoe",
"is_following": true
}
}
/api/v1/users/{username}/posts
Implemented
Retrieve all public posts from a specific user by username
{
"headers": {
"Accept": "application\/json"
},
"parameters": {
"username": "johndoe",
"page": 1,
"limit": 20
},
"body": null
}
{
"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
}
}
}
/api/v1/users/{username}/unfollow
Implemented
Unfollow a user by username
{
"headers": {
"Authorization": "Bearer {token}",
"Content-Type": "application\/json",
"Accept": "application\/json"
},
"parameters": {
"username": "johndoe"
},
"body": null
}
{
"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
}
}
}
/api/v1/verification/cancel
Implemented
Cancel a pending verification request. Removes all uploaded documents and resets verification status. Only works for pending requests.
[]
{
"status": "cancelled",
"message": "Verification request cancelled successfully"
}
/api/v1/verification/request
Implemented
Submit a verification request with identity documents. User must provide documents (front, back, selfie) as base64 data URLs.
{
"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"
}
{
"status": "submitted",
"message": "Verification request submitted successfully",
"request_id": 1
}
/api/v1/verification/status
Implemented
Get the current verification status of the authenticated user. Returns pending, approved, or rejected status with details.
[]
{
"verified": false,
"status": "pending",
"type": "identity",
"submitted_at": "2025-12-30T12:07:56.000000Z",
"reviewed_at": null,
"rejection_reason": null
}