# Digital Ledger API Documentation ## Overview This document outlines all the APIs required for the Digital Ledger Mobile App backend implementation. The APIs are organized by feature modules. ## Base URL ``` https://api.pozo-accounts.com/v1 ``` ## Authentication All APIs require Bearer token authentication: ``` Authorization: Bearer ``` --- ## 1. USER MANAGEMENT APIs ### 1.1 User Profile ```http GET /user/profile ``` **Response:** ```json { "success": true, "data": { "id": "user_123", "name": "Ram Kumar", "email": "ram@business.com", "phone": "+91 98765 43210", "avatar": "RK", "businessName": "Ram's Store", "role": "Business Owner", "createdAt": "2024-01-15T10:30:00Z", "updatedAt": "2024-12-03T14:20:00Z" } } ``` ### 1.2 Update User Profile ```http PUT /user/profile ``` **Request Body:** ```json { "name": "Ram Kumar", "email": "ram@business.com", "phone": "+91 98765 43210", "businessName": "Ram's Store" } ``` --- ## 2. DASHBOARD APIs ### 2.1 Dashboard Summary ```http GET /dashboard/summary ``` **Response:** ```json { "success": true, "data": { "transactionSummary": { "pendingPayment": { "count": 125, "change": "+8%", "positive": true }, "received": { "count": 456, "change": "+12%", "positive": true }, "paidOut": { "count": 234, "change": "+5%", "positive": true }, "completed": { "count": 892, "change": "+15%", "positive": true }, "cancelled": { "count": 23, "change": "-3%", "positive": false } }, "financialOverview": { "totalIncome": 328000, "totalExpense": 231000, "netBalance": 97000, "monthlyData": [ { "month": "Jan", "income": 45000, "expense": 32000 } ] }, "quickStats": { "totalCustomers": 248, "customerGrowth": "+12%", "activeTransactions": 89, "pendingApproval": 23, "netBalance": 97000, "cashflowStatus": "positive" } } } ``` --- ## 3. CONTACT MANAGEMENT APIs (Customers & Suppliers) ### 3.1 Get All Contacts ```http GET /contacts?page=1&limit=10&search=&balanceType=all&contactType=all ``` **Query Parameters:** - `page`: Page number (default: 1) - `limit`: Items per page (default: 10) - `search`: Search by name/phone - `balanceType`: all|credit|debit - `contactType`: all|C|S (C=Customer, S=Supplier) **Response:** ```json { "success": true, "data": { "contacts": [ { "id": "contact_001", "name": "Deepa", "phone": "98755 43210", "email": "deepa@example.com", "address": "123 Main St", "avatar": "D", "balance": 800, "balanceType": "credit", "contactType": "C", "status": "Active", "lastTransaction": "Payment received", "lastTransactionDate": "2024-12-03T14:30:00Z", "totalTransactions": 24, "createdAt": "2024-01-15T10:30:00Z" } ], "pagination": { "currentPage": 1, "totalPages": 5, "totalItems": 50, "hasNext": true, "hasPrev": false }, "summary": { "customers": { "total": 30, "totalReceivable": 82000, "totalPayable": 16700, "active": 28 }, "suppliers": { "total": 20, "totalReceivable": 5000, "totalPayable": 62500, "active": 18 } } } } ``` ### 3.2 Create Contact ```http POST /contacts ``` **Request Body:** ```json { "name": "John Doe", "phone": "+91 98765 43210", "email": "john@example.com", "address": "123 Main St, City", "contactType": "C", "initialBalance": 0, "balanceType": "credit" } ``` ### 3.3 Get Contact Details ```http GET /contacts/{contactId} ``` **Response:** ```json { "success": true, "data": { "id": "contact_001", "name": "Deepa", "phone": "98755 43210", "email": "deepa@example.com", "address": "123 Main St", "avatar": "D", "balance": 800, "balanceType": "credit", "contactType": "C", "status": "Active", "createdAt": "2024-01-15T10:30:00Z", "transactions": [ { "id": "txn_001", "date": "2024-12-02T00:00:00Z", "type": "credit", "amount": 500, "note": "Invoice payment", "paymentMethod": "UPI", "status": "completed" } ] } } ``` ### 3.4 Update Contact ```http PUT /contacts/{contactId} ``` **Request Body:** ```json { "name": "John Doe Updated", "phone": "+91 98765 43210", "email": "john.updated@example.com", "address": "456 New St, City" } ``` ### 3.5 Delete Contact ```http DELETE /contacts/{contactId} ``` --- ## 4. TRANSACTION MANAGEMENT APIs ### 4.1 Get All Transactions ```http GET /transactions?page=1&limit=10&type=all&status=all&dateFrom=&dateTo= ``` **Response:** ```json { "success": true, "data": { "transactions": [ { "id": "txn_001", "contactId": "contact_001", "contactName": "Rajesh Kumar", "contactAvatar": "RK", "contactType": "C", "category": "Payment", "type": "Credit", "amount": 45000, "date": "2024-05-30T00:00:00Z", "status": "Completed", "paymentMethod": "UPI", "note": "Invoice payment" } ], "pagination": { "currentPage": 1, "totalPages": 10, "totalItems": 100 }, "summary": { "pendingPayments": 34000, "receivedPayments": 550870, "statusCounts": { "waitingPayment": 435, "onProcess": 234, "onDelivery": 456, "completed": 675, "cancelled": 675 } } } } ``` ### 4.2 Create Transaction ```http POST /transactions ``` **Request Body:** ```json { "contactId": "contact_001", "type": "credit", "amount": 1000, "note": "Payment received", "paymentMethod": "Cash", "date": "2024-12-03T00:00:00Z", "category": "Payment" } ``` ### 4.3 Update Transaction ```http PUT /transactions/{transactionId} ``` ### 4.4 Delete Transaction ```http DELETE /transactions/{transactionId} ``` --- ## 5. CASHBOOK APIs ### 5.1 Get Cashbook Entries ```http GET /cashbook?page=1&limit=10&type=all&dateFrom=&dateTo= ``` **Response:** ```json { "success": true, "data": { "entries": [ { "id": "cb_001", "time": "10:22 AM", "date": "2024-12-03T00:00:00Z", "type": "out", "paymentType": "ONLINE", "description": "Office Supplies Purchase", "category": "Expenses", "amount": 1200, "attachments": [] } ], "summary": { "totalIn": 13500, "totalOut": 1550, "netBalance": 11950, "totalTransactions": 4 }, "todaySummary": { "todayIn": 5000, "todayOut": 1200, "netToday": 3800 } } } ``` ### 5.2 Create Cashbook Entry ```http POST /cashbook ``` **Request Body:** ```json { "type": "in", "amount": 5000, "description": "Sales Revenue", "category": "Income", "paymentType": "CASH", "date": "2024-12-03T00:00:00Z", "attachments": ["file_url_1", "file_url_2"] } ``` ### 5.3 Update Cashbook Entry ```http PUT /cashbook/{entryId} ``` ### 5.4 Delete Cashbook Entry ```http DELETE /cashbook/{entryId} ``` --- ## 6. EXPENSE MANAGEMENT APIs ### 6.1 Get All Expenses ```http GET /expenses?page=1&limit=10&category=&status=&dateFrom=&dateTo= ``` **Response:** ```json { "success": true, "data": { "expenses": [ { "id": "exp_001", "title": "Inventory Restock", "vendor": "Fresh Farm Wholesale", "category": "Inventory", "date": "2024-12-03T00:00:00Z", "paymentType": "UPI", "amount": 18500, "status": "Settled", "isFixedCommitment": false, "attachments": [] } ], "summary": { "totalSpent": 65000, "recurringExpenses": 37400, "pendingAmount": 37650, "totalExpenses": 5 }, "categories": ["Inventory", "Fixed Cost", "Logistics", "Utilities", "Supplies"] } } ``` ### 6.2 Create Expense ```http POST /expenses ``` **Request Body:** ```json { "title": "Office Rent", "vendor": "Property Owner", "category": "Fixed Cost", "amount": 25000, "paymentType": "Bank Transfer", "date": "2024-12-01T00:00:00Z", "status": "Scheduled", "isFixedCommitment": true, "attachments": [] } ``` ### 6.3 Update Expense ```http PUT /expenses/{expenseId} ``` ### 6.4 Delete Expense ```http DELETE /expenses/{expenseId} ``` --- ## 7. LEDGER APIs ### 7.1 Get Ledger Summary ```http GET /ledger/summary ``` **Response:** ```json { "success": true, "data": { "customers": { "totalReceivable": 4800, "totalPayable": 1700, "count": 6 }, "suppliers": { "totalReceivable": 5000, "totalPayable": 62500, "count": 5 }, "netBalance": -54400, "recentActivity": [ { "id": "act_001", "type": "payment_received", "description": "₹800 from Deepa", "time": "2 hours ago", "status": "completed" } ] } } ``` --- ## 8. REPORTS APIs ### 8.1 Get Cashbook Report ```http GET /reports/cashbook?dateFrom=2024-11-01&dateTo=2024-12-31 ``` **Response:** ```json { "success": true, "data": { "period": "1 Nov - 31 Dec 2024", "summary": { "totalIn": 125000, "totalOut": 87000, "netBalance": 38000, "totalTransactions": 156 }, "chartData": [ { "name": "Week 1", "moneyIn": 25000, "moneyOut": 18000 } ], "categoryBreakdown": [ { "category": "Income", "amount": 125000, "percentage": 58.9 } ] } } ``` ### 8.2 Get Transaction Report ```http GET /reports/transactions?dateFrom=2024-11-01&dateTo=2024-12-31 ``` **Response:** ```json { "success": true, "data": { "period": "1 Nov - 31 Dec 2024", "customers": { "totalReceivable": 59550, "totalReceived": 13500, "pending": 46050, "count": 6 }, "suppliers": { "totalPayable": 9800, "totalPaid": 1550, "pending": 8250, "count": 5 }, "chartData": [ { "name": "Customers", "receivable": 59550, "received": 13500, "pending": 46050 } ] } } ``` --- ## 9. FILE UPLOAD APIs ### 9.1 Upload File ```http POST /files/upload ``` **Request:** Multipart form data **Response:** ```json { "success": true, "data": { "fileId": "file_123", "fileName": "receipt.jpg", "fileUrl": "https://cdn.pozo-accounts.com/files/file_123.jpg", "fileSize": 2048, "mimeType": "image/jpeg" } } ``` --- ## 10. NOTIFICATION APIs ### 10.1 Get Notifications ```http GET /notifications?page=1&limit=10&unreadOnly=false ``` **Response:** ```json { "success": true, "data": { "notifications": [ { "id": "notif_001", "title": "Payment Received", "message": "₹800 received from Deepa", "type": "payment", "isRead": false, "createdAt": "2024-12-03T14:30:00Z" } ], "pagination": { "currentPage": 1, "totalPages": 3, "totalItems": 25, "unreadCount": 5 } } } ``` ### 10.2 Mark as Read ```http PUT /notifications/{notificationId}/read ``` --- ## Error Response Format All APIs return errors in this format: ```json { "success": false, "error": { "code": "VALIDATION_ERROR", "message": "Invalid input data", "details": { "field": "email", "message": "Invalid email format" } } } ``` ## API Summary **Total APIs: 35+ endpoints** - User Management: 2 APIs - Dashboard: 1 API - Contact Management (Customers & Suppliers): 5 APIs - Transaction Management: 4 APIs - Cashbook: 4 APIs - Expense Management: 4 APIs - Ledger: 1 API - Reports: 2 APIs - File Upload: 1 API - Notifications: 2 APIs ## Key Benefits of Unified Contact API - **Simplified Backend**: Single table/model for customers and suppliers - **Consistent Data Structure**: Same fields and operations for both types - **Easier Maintenance**: One set of CRUD operations instead of two - **Flexible Filtering**: Can filter by contactType ('C'/'S') or get all contacts - **Unified Search**: Search across both customers and suppliers simultaneously ## Common HTTP Status Codes - `200` - Success - `201` - Created - `400` - Bad Request - `401` - Unauthorized - `403` - Forbidden - `404` - Not Found - `422` - Validation Error - `500` - Internal Server Error ## Rate Limiting - 1000 requests per hour per user - 100 requests per minute per endpoint ## Pagination All list APIs support pagination with these query parameters: - `page`: Page number (default: 1) - `limit`: Items per page (default: 10, max: 100) ## Date Format All dates should be in ISO 8601 format: `2024-12-03T14:30:00Z` ## File Upload Constraints - Maximum file size: 10MB - Supported formats: JPG, PNG, PDF - Files are automatically compressed and optimized