This document provides detailed information about the VX Engine REST API endpoints.
http://localhost:3008
VX Engine uses JWT (JSON Web Token) for authentication. Include the token in the Authorization header:
Authorization: Bearer <your-jwt-token>
All API responses follow this standard format:
{
"success": true,
"data": {},
"message": "Operation successful",
"timestamp": "2024-01-01T00:00:00.000Z"
}Error responses:
{
"success": false,
"error": {
"name": "ERROR_TYPE",
"message": "Error description"
},
"timestamp": "2024-01-01T00:00:00.000Z"
}Register a new user account.
Request Body:
{
"email": "user@example.com",
"password": "securePassword123",
"firstName": "John",
"lastName": "Doe"
}Response:
{
"success": true,
"data": {
"user": {
"id": "user_id",
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
},
"token": "jwt_token_here"
},
"message": "User registered successfully"
}Authenticate user and receive JWT token.
Request Body:
{
"email": "user@example.com",
"password": "securePassword123"
}Response:
{
"success": true,
"data": {
"user": {
"id": "user_id",
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
},
"token": "jwt_token_here"
},
"message": "Login successful"
}Logout user (invalidate token).
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"message": "Logout successful"
}Refresh JWT token.
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"data": {
"token": "new_jwt_token_here"
},
"message": "Token refreshed successfully"
}All user endpoints require authentication.
Get current user profile.
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"data": {
"user": {
"id": "user_id",
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe",
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}
}
}Update user profile.
Headers:
Authorization: Bearer <jwt_token>
Request Body:
{
"firstName": "Jane",
"lastName": "Smith",
"phone": "+1234567890"
}Response:
{
"success": true,
"data": {
"user": {
"id": "user_id",
"email": "user@example.com",
"firstName": "Jane",
"lastName": "Smith",
"phone": "+1234567890"
}
},
"message": "Profile updated successfully"
}Delete user account.
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"message": "Account deleted successfully"
}Upload files to AWS S3.
Headers:
Authorization: Bearer <jwt_token>
Content-Type: multipart/form-data
Request Body:
files: [File objects]
Response:
{
"success": true,
"data": {
"files": [
{
"id": "file_id",
"filename": "document.pdf",
"url": "https://s3.amazonaws.com/bucket/file_path",
"size": 1024,
"mimeType": "application/pdf"
}
]
},
"message": "Files uploaded successfully"
}Get file details.
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"data": {
"file": {
"id": "file_id",
"filename": "document.pdf",
"url": "https://s3.amazonaws.com/bucket/file_path",
"size": 1024,
"mimeType": "application/pdf",
"uploadedBy": "user_id",
"createdAt": "2024-01-01T00:00:00.000Z"
}
}
}Delete file.
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"message": "File deleted successfully"
}Get presigned URL for direct S3 upload.
Headers:
Authorization: Bearer <jwt_token>
Query Parameters:
filename=document.pdf&contentType=application/pdf
Response:
{
"success": true,
"data": {
"uploadUrl": "https://s3.amazonaws.com/presigned-url",
"fileId": "file_id"
}
}Get sample data.
Headers:
Authorization: Bearer <jwt_token>
Query Parameters:
page=1&limit=10&sort=createdAt&order=desc
Response:
{
"success": true,
"data": {
"items": [
{
"id": "sample_id",
"name": "Sample Item",
"description": "Sample description",
"createdAt": "2024-01-01T00:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 100,
"pages": 10
}
}
}Create sample data.
Headers:
Authorization: Bearer <jwt_token>
Request Body:
{
"name": "New Sample",
"description": "Sample description",
"category": "test"
}Response:
{
"success": true,
"data": {
"item": {
"id": "sample_id",
"name": "New Sample",
"description": "Sample description",
"category": "test",
"createdAt": "2024-01-01T00:00:00.000Z"
}
},
"message": "Sample created successfully"
}Get specific sample item.
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"data": {
"item": {
"id": "sample_id",
"name": "Sample Item",
"description": "Sample description",
"category": "test",
"createdAt": "2024-01-01T00:00:00.000Z"
}
}
}Update sample item.
Headers:
Authorization: Bearer <jwt_token>
Request Body:
{
"name": "Updated Sample",
"description": "Updated description"
}Response:
{
"success": true,
"data": {
"item": {
"id": "sample_id",
"name": "Updated Sample",
"description": "Updated description",
"updatedAt": "2024-01-01T00:00:00.000Z"
}
},
"message": "Sample updated successfully"
}Delete sample item.
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"message": "Sample deleted successfully"
}Get user notifications.
Headers:
Authorization: Bearer <jwt_token>
Query Parameters:
page=1&limit=10&read=false
Response:
{
"success": true,
"data": {
"notifications": [
{
"id": "notification_id",
"title": "Notification Title",
"message": "Notification message",
"type": "info",
"read": false,
"createdAt": "2024-01-01T00:00:00.000Z"
}
],
"unreadCount": 5
}
}Send push notification.
Headers:
Authorization: Bearer <jwt_token>
Request Body:
{
"userId": "target_user_id",
"title": "Notification Title",
"message": "Notification message",
"type": "info"
}Response:
{
"success": true,
"message": "Notification sent successfully"
}Mark notification as read.
Headers:
Authorization: Bearer <jwt_token>
Response:
{
"success": true,
"message": "Notification marked as read"
}| Code | Description |
|---|---|
| 200 | OK - Request successful |
| 201 | Created - Resource created successfully |
| 400 | Bad Request - Invalid request parameters |
| 401 | Unauthorized - Authentication required |
| 403 | Forbidden - Access denied |
| 404 | Not Found - Resource not found |
| 409 | Conflict - Resource already exists |
| 422 | Unprocessable Entity - Validation error |
| 500 | Internal Server Error - Server error |
API endpoints are rate limited to prevent abuse:
- Authentication endpoints: 5 requests per minute
- File upload endpoints: 10 requests per minute
- Other endpoints: 100 requests per minute
Rate limit headers are included in responses:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 99
X-RateLimit-Reset: 1640995200
For endpoints that return lists, pagination is supported:
Query Parameters:
page(default: 1) - Page numberlimit(default: 10, max: 100) - Items per pagesort(default: createdAt) - Sort fieldorder(default: desc) - Sort order (asc/desc)
Response:
{
"data": {
"items": [...],
"pagination": {
"page": 1,
"limit": 10,
"total": 100,
"pages": 10,
"hasNext": true,
"hasPrev": false
}
}
}Many endpoints support filtering using query parameters:
GET /sample?category=test&name=sample&createdAt[gte]=2024-01-01
Supported operators:
eq- equalsne- not equalsgt- greater thangte- greater than or equallt- less thanlte- less than or equalin- in arraynin- not in array
VX Engine supports webhooks for real-time notifications:
Register a webhook endpoint.
Request Body:
{
"url": "https://your-app.com/webhook",
"events": ["user.created", "file.uploaded"],
"secret": "webhook_secret"
}user.created- New user registrationuser.updated- User profile updateuser.deleted- User account deletionfile.uploaded- File upload completedfile.deleted- File deletednotification.sent- Notification sent
Official SDKs are available for:
- JavaScript/Node.js:
npm install vx-engine-sdk - Python:
pip install vx-engine-sdk - PHP:
composer require vx-engine/sdk
Example usage:
const VXEngine = require('vx-engine-sdk');
const client = new VXEngine({
baseUrl: 'http://localhost:3008',
apiKey: 'your-api-key'
});
const user = await client.users.getProfile();Use the following test credentials for development:
Test User:
- Email:
test@vxengine.com - Password:
test123456
API Test Endpoint:
GET /throwError
This endpoint throws a test error for debugging purposes.
For API support:
- Documentation: This file
- Issues: GitHub repository issues
- Email: support@vxengine.com