POS_node/readme.md

588 lines
12 KiB
Markdown
Raw Permalink Normal View History

2024-08-27 08:37:01 +08:00
# OBANANA WALLET API
This API allows you to:
### USER:
- AUTHENTICATE via LOGIN
- REGISTER A USER
- GET A USER
- GET ALL USERS
- UPDATE A USER
- UPDATE USER DETAILS WITH ANY PARAM EXCEPT PHOTO AND PASSWORD
- UPDATE USER PASSWORD
- UPDATE USER PHOTO
- ADD FRIEND TO USER
- UPDATE A FRIEND DETAILS
- DELETE A USER
- DELETE A FRIEND
### KYCS
- CREATE A KYC
- GET ALL KYCS
- GET A SINGLE KYC
- DELETE A KYC
- UPDATE KYC
### EMAIL
- SEND EMAIL
### UPLOAD IMAGE
- UPLOAD AN IMAGE
The API is available at `http://obpay.online`
## Endpoints
## API Authentication
### LOGIN
POST `/api/auth/login`
The request body needs to be in JSON format and include the following properties:
- `email` - String || `phone` - String
- `password` - String
Example
```
{
"users": "meme1@gmail.com" or "09123456789",
"password": "123456"
}
```
The response body will contain the access token. The access token is valid for 7 days.
### REGISTER
POST `/api/auth/register`
The request body needs to be in JSON format and include the following properties:
- `fName` - String - Required
- `lName` - String - Required
- `email` - String - Required
- `password` - String - Required
- `phone` - String - Required
- `photo` - String --NEW--
- `address1` - String
- `address2` - String
- `city` - String
- `province` - String
- `country` - String
- `zip` - String
- `type` - String - Default client
Automatically generating ID
The photo param is `picture`
send the photo on the input type file and name is picture
Example
```
POST /api/auth/register
{
"fName":"Sana",
"lName":"Di",
"email":"meme1@gmail.com",
"password":"123456",
"phone":"123456",
"address1":"Blk 123 Makati City",
"address2":"Blk 123 Makati City",
"city":"Makati",
"province":"Metro Manila",
"country":"Philippines",
"zip":"1300",
"type":"Admin",
}
```
## Access Users Data
### List of all Users
GET `/api/users/`
Authorization: Bearer <YOUR TOKEN>
Returns detailed list of All Users.
### Get a single User by PHONE and EMAIL
GET `/api/users/:id`
Retrieve detailed information about a User.
Example
```
GET /api/users/615a9f6d236abe2dbb2e424c
Authorization: Bearer <YOUR TOKEN>
Output:
{
"user": {
"_id": "642a1b830ec9ced62dfbc778",
"fName": "Sana",
"lName": "Di",
"email": "meme1@gmail.com",
"password": "$2b$10$al2mB9HCdwaUEuK5ODfVqe/IpsAq8tfT4xDLxCduSkpD7dM8KvWjW",
"phone": "09112344556",
"photo": "",
"address1": "",
"address2": "",
"city": "",
"province": "",
"country": "",
"zip": "",
"type": "client",
"createdAt": "2023-04-03T00:19:15.051Z",
"updatedAt": "2023-04-03T00:19:15.051Z",
"__v": 0
},
"balance": 0
------- The User balance is automatically retireved by calculating the transaction involving the user by comparing the userID with the to_id and from_id from the Transaction then after sum when the user is the receiver and deduct when the user is the sender
}
```
### Get a single User by ID
GET `/api/users/id/:id`
Retrieve detailed information about a User.
Example
```
GET /api/users/615a9f6d236abe2dbb2e424c
Authorization: Bearer <YOUR TOKEN>
Output:
{
"user": {
"_id": "642a1b830ec9ced62dfbc778",
"fName": "Sana",
"lName": "Di",
"email": "meme1@gmail.com",
"password": "$2b$10$al2mB9HCdwaUEuK5ODfVqe/IpsAq8tfT4xDLxCduSkpD7dM8KvWjW",
"phone": "09112344556",
"photo": "",
"address1": "",
"address2": "",
"city": "",
"province": "",
"country": "",
"zip": "",
"type": "client",
"createdAt": "2023-04-03T00:19:15.051Z",
"updatedAt": "2023-04-03T00:19:15.051Z",
"__v": 0
},
"balance": 0
------- The User balance is automatically retireved by calculating the transaction involving the user by comparing the userID with the to_id and from_id from the Transaction then after sum when the user is the receiver and deduct when the user is the sender
}
```
### Update a user
PATCH `/api/users/:id`
Update an existing User. Requires authentication.
The request body needs to be in JSON format and allows you to update the following properties:
The photo param is `picture`
send the photo on the input type file and name is picture
- `fName` - String - Required
- `lName` - String - Required
- `email` - String - Required
- `password` - String - Required
- `phone` - String - Required
- `photo` - String --NEW--
- `address1` - String
- `address2` - String
- `city` - String
- `province` - String
- `country` - String
- `zip` - String
- `type` - String - Default client
- `status` String -Default new
- `kycStatus` String -Default new
- `kycRef` String - ID of the kyc of the user that was validated
Example
```
PATCH /api/users/615a9f6d236abe2dbb2e424c
Authorization: Bearer <YOUR TOKEN>
{
"fName":"SanaNew",
"lName":"Di",
"email":"meme1@gmail.com",
"password":"123456",
"phone":"123456",
"address1":"Blk 123 Makati City",
"address2":"Blk 123 Makati City",
"city":"Makati",
"province":"Metro Manila",
"country":"Philippines",
"zip":"1300",
"type":"Admin",
}
```
### Update a user with any parameters
PATCH `/api/users/:id/sub`
You can update the user details with only few or selected parameters except photo and password. Requires authentication.
The request body needs to be in JSON format and allows you to update the following properties:
- `fName` - String - OPTIONAL
- `lName` - String - OPTIONAL
- `email` - String - OPTIONAL
- `phone` - String - OPTIONAL
- `address1` - String - OPTIONAL
- `address2` - String - OPTIONAL
- `city` - String - OPTIONAL
- `province` - String - OPTIONAL
- `country` - String - OPTIONAL
- `zip` - String - OPTIONAL
- `type` - String - Default client - OPTIONAL
- `status` String - OPTIONAL
- `kycStatus` String -Default new
- `kycRef` String - ID of the kyc of the user that was validated
Example
```
PATCH /api/users/615a9f6d236abe2dbb2e424c
Authorization: Bearer <YOUR TOKEN>
{
"fName":"SanaNew1",
"lName":"Di",
}
```
### Update a user Password
PATCH `/api/users/:id/password`
Update the password of an existing User. Requires authentication.
The request body needs to be in JSON format and allows you to update the following properties:
automatically hash the passwords
- `password` - String - Required
Example
```
PATCH /api/users/615a9f6d236abe2dbb2e424c/password
Authorization: Bearer <YOUR TOKEN>
{
"password":"123456",
}
```
### Update a user PHOTO
PATCH `/api/users/:id/photo`
Update the photo of an existing User. Requires authentication.
The request body needs to be in JSON format and allows you to update the following properties:
The photo param is `picture`
send the photo on the input type file and name is picture
- `photo` - String Required
Example
```
PATCH /api/users/615a9f6d236abe2dbb2e424c/photo
Authorization: Bearer <YOUR TOKEN>
{
"photo":"image link",
}
```
### Delete User
DELETE `/api/users/:id`
Delete a user by id. Requires authentication.
The request parameter requires:
-`id` - String - Required. The id of the user to be deleted.
Example
```
DELETE /api/users/615a9f6d236abe2dbb2e424c
Authorization: Bearer <YOUR TOKEN>
```
### Add Friends to User
POST /api/users/:id/friends
Add friends to a user by their ID. Requires authentication.
The request body needs to be in JSON format and allows you to add the following properties:
- `number` - String - Required
- `favorite` - Boolean
- `nickname` - String - Required
Example:
```
POST /api/users/6450c39d34c51843e1dd6852/friends
Authorization: Bearer <YOUR TOKEN>
{
"number": "09567890544",
"favorite": true,
"nickname": "Buddy"
}
```
### Update Friend of User
PATCH /api/users/:id/friends/:friendId
Updates a specific friend of a user by their ID. Requires authentication.
The request body needs to be in JSON format and allows you to update the following properties:
- `number` - String - Required
- `favorite` - Boolean
- `nickname` - String - Required
Example:
```
PATCH /api/users/6450c39d34c51843e1dd6852/friends/6450c39d34c51843e1dd6852
Authorization: Bearer <YOUR TOKEN>
{
"number": "09567890544",
"favorite": false,
"nickname": "Pal"
}
```
### Delete Friend of User
DELETE /api/users/:id/friends/:friendId
Deletes a specific friend of a user by their ID. Requires authentication.
Example:
```
DELETE /api/users/6450c39d34c51843e1dd6852/friends/6450c39d34c51843e1dd6852
Authorization: Bearer <YOUR TOKEN>
```
## Access Kyc Data
### List of all Kycs
GET `/api/kycs/`
Authorization: Bearer <YOUR TOKEN>
Returns detailed list of All Kyc.
### Get a single Kyc
GET `/api/kycs/:id`
Retrieve detailed information about a single Kyc base on the `id`.
Example
```
GET /api/kycs/6424d962fcb1e4f824546c89
Authorization: Bearer <YOUR TOKEN>
{
"_id": "65d7fce8637f8e8fd8e84124",
"full_name": "San Man",
"date_of_birth": "Feb 23, 2001",
"userRef": "651b7e256faf1180905d613c",
"id_num": "01-234-567",
"address": "San Man st. Makati City",
"images": [
{
"link": "https://testapi.obpay.online/assets/651b7e256faf1180905d613c-729660ff-2703-46ee-b823-3d2cedd61f90.png",
"_id": "65d7fce8637f8e8fd8e84125"
},
{
"link": "https://testapi.obpay.online/assets/651b7e256faf1180905d613c-8e91f5bc-75c2-4974-b329-d106df3aa17f.png",
"_id": "65d7fce8637f8e8fd8e84126"
}
],
"selfie": "https://testapi.obpay.online/assets/651b7e256faf1180905d613c-53cbf0fe-28fe-4f06-ad7f-0640b6db5f98.jpeg",
"status": "pending",
"createdAt": "2024-02-23T02:03:20.503Z",
"updatedAt": "2024-02-23T02:03:20.503Z",
"__v": 0
}
```
### Create a Kyc
POST `/api/kycs/create`
Create a Kyc. Requires authentication.
The request body needs to be in JSON format and allows you to update the following properties:
- `full_name` - String
- `date_of_birth` - String
- `userRef` - String
- `id_num` - String
- `address` - Number
- `images` - String
- `selfie` - String
- `status` - String
Example
```
Post /api/kycs/create
Authorization: Bearer <YOUR TOKEN>
{
"full_name": "San Man",
"date_of_birth": "Feb 23, 2001",
"userRef": "651b7e256faf1180905d613c",
"id_num": "01-234-567",
"address": "San Man st. Makati City",
"images": [
{
"link": "https://testapi.obpay.online/assets/651b7e256faf1180905d613c-729660ff-2703-46ee-b823-3d2cedd61f90.png",
"_id": "65d7fce8637f8e8fd8e84125"
},
{
"link": "https://testapi.obpay.online/assets/651b7e256faf1180905d613c-8e91f5bc-75c2-4974-b329-d106df3aa17f.png",
"_id": "65d7fce8637f8e8fd8e84126"
}
],
"selfie": "https://testapi.obpay.online/assets/651b7e256faf1180905d613c-53cbf0fe-28fe-4f06-ad7f-0640b6db5f98.jpeg",
"status": "pending"
}
```
### Update a Kyc
POST `/api/kycs/update/:id`
Update a Notification. Requires authentication.
The request body needs to be in JSON format and allows you to update the following properties:
- `status` - String
Example
```
Post /api/kycs/update/6424d962fcb1e4f824546c89
Authorization: Bearer <YOUR TOKEN>
{
"status":"validated",
}
```
### Delete a Kyc
DELETE `/api/kycs/:id/delete`
Delete an existing Kyc. Requires authentication.
The request body needs to be empty.
Example
```
DELETE /api/kycs/6424d962fcb1e4f824546c89/delete
Authorization: Bearer <YOUR TOKEN>
```
## Send Email
POST `/api/send-email/`
Sending Email.
The request body needs to be in JSON format and allows you to send the following properties:
- `email` - String - Required ---Receiver of the email
- `html` - String - Required
- `subject` - String - Required
Example
```
Post /api/send-email/
{
"email":"hello@example.com",
"subject":"This is your notif",
"html":"<h1>hello!</h1>"
}
```
## Upload Image
POST `/api/send-email/`
Sending Email.
The request body needs to be in Form Data format and allows you to send the following properties:
- `image` - File - Required - 1 file only
- `category` - String - Required
- `image_id` - String - Required
Example
```
Post /api/upload_images
```