PozoAccounts/API_DOCUMENTATION.md

699 lines
13 KiB
Markdown
Raw Normal View History

2025-12-11 12:49:42 +05:30
# 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 <jwt_token>
```
---
## 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