# Payment Manager API
## Login
### Login
```bash
GET /login?username=admin123
&password=*********
```
Returns
```json
{
"status": 200,
"message": "Success",
"data": {
"id": "0bc7b36a-9ba9-4ce0-83f0-0a526f354e07",
"first_name": "Admin",
"last_name": "User",
"email": "admin@example.com",
"phone": "123123123",
"userType": "admin",
"username": "admin123",
"password": "**********"
}
}
```
### Forgot username
```bash
GET /forgot-username?email=admin@example.com
```
Returns
```json
{
"status": 200,
"message": "Success"
}
```
*Sends email with username*
### Forgot Passsword
```bash
GET /forgot-password?email=admin@example.com
```
Returns
```json
{
"status": 200,
"message": "Success"
}
```
*Sends Email with temporary password that needs to be changed*
<br>
---
## Payments
### Search Payment
Shows a list of payments that meet the criteria given in the endpoint's parameters
```bash
GET /payments?division=1,2,3
&type=paypal
&source=1
&customer[lastName]=Robertson
&customer[city]=Santa%20Ana
...
```
Returns
```json
[
{
"id": "123",
"date": "2021-02-05T10:18:13-05:00",
"division": "Division 1",
"source": "Source A",
"firstName": "Daniel",
"lastName": "Robertson",
"address": "2972 Westheimer Rd.",
"city": "Santa Ana",
"state": "Illinois",
"zipcode": 85486,
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net",
"subscriberId": "SRH76657",
"paymentType": "credit",
"amount": 145.00,
"tax": 5.00,
"total": 150.00,
"cardNumber": "************4845",
"cardExpiration": "2024-01",
"fsv": 123456,
"paymentCardType": "Visa",
"token": 94789,
"transaction": "Sale",
"notes": [
"lorem ipsum dolor sit amet",
"Duis aute irure dolor in reprehenderit"
]
}
]
```
### Create Payment
Creates a new entry for a payment
```bash
POST /create-payment
```
Parameters
**(Example Credit Card)**
```json
{
"division": "Division 1",
"source": "Source A",
"type": "Cancel",
"firstName": "Daniel",
"lastName": "Robertson",
"address": "2972 Westheimer Rd.",
"city": "Santa Ana",
"state": "Illinois",
"zipcode": 85486,
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net",
"subscriberId": "SRH76657",
"amount": "145.00",
"tax": "5.00",
"total": "150.00",
"paymentType": "credit",
"cardNumber": 1234123412341234,
"cardExpiration": "2025-01",
"fsv": 123456,
"paymentCardType": "Visa"
"bankAccount": null,
"abaRouting": null,
"bankAccountType": null,
"accountType": null,
"transaction": "Sale",
"notes": [
"lorem ipsum dolor sit amet",
"Duis aute irure dolor in reprehenderit"
]
}
```
**(Example Bank Account)**
```json
{
"division": "Division 1",
"source": "Source A",
"type": "Cancel",
"state": "Voided",
"status": "Success",
"firstName": "Daniel",
"lastName": "Robertson",
"address": "2972 Westheimer Rd.",
"city": "Santa Ana",
"state": "Illinois",
"zipcode": 85486,
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net",
"subscriberId": "SRH76657",
"amount": 145.00,
"tax": 5.00,
"total": 150.00,
"paymentType": "bankAccount"
"cardNumber": null,
"cardExpiration": null,
"fsv": null,
"paymentCardType": null
"bankAccount": 12333112312,
"abaRouting": 123,
"bankAccountType": "Checkings",
"accountType": "Business",
"transaction": "Sale",
"notes": [
"lorem ipsum dolor sit amet",
"Duis aute irure dolor in reprehenderit"
]
}
```
Returns
```json
{
"status": 200,
"message": "Success"
}
```
#### Notes
- There are two actions "Sale" and "Credit", whats the differente between those two?
### Save search (Payments)
Saves a performed search and create of list of previous searches
```bash
POST /save-payments-search
```
Parameters
```json
{
"userId": "0bc7b36a-9ba9-4ce0-83f0-0a526f354e07",
"data": {
"date": "2021-02-05T10:18:13-05:00",
"division": [1,2,3],
"type": ["paypal"],
"source": [1],
"lastName": "Robertson"
"city": "Santa Ana",
...
}
}
```
Returns
```json
{
"status": 200,
"message": "Success"
}
```
<br>
---
## Accounts
### Search Account
Shows a list of accounts that meet the criteria given in the endpoint's parameters
```bash
GET /accounts?division=1,2,3
&firstName=John
&firstName=Edwards
&accountNumber=1234567890
&token=39144
&phone=12312312313
&email=admin@example.com
```
Returns
```json
[
{
"id": "123",
"division": "Division 1",
"source": "Source A",
"firstName": "Daniel",
"lastName": "Robertson",
"address": "2972 Westheimer Rd.",
"city": "Santa Ana",
"state": "Illinois",
"zipcode": 85486,
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net",
"subscriberId": "SRH76657",
"cardNumber": "************4845",
"cardExpiration": "2024-01",
"fsv": 123456,
"paymentCardType": "Visa",
"token": 94789,
"expirationDate": "2024-06"
...
"notes": [
"lorem ipsum dolor sit amet",
"Duis aute irure dolor in reprehenderit"
]
}
]
```
#### Notes:
- Do users also have Bank account info?
### Create Account
Creates a new entry for an account
```bash
POST /create-account
```
Parameters
```json
{
"id": "123",
"division": "Division 1",
"source": "Source A",
"firstName": "Daniel",
"lastName": "Robertson",
"address": "2972 Westheimer Rd.",
"city": "Santa Ana",
"state": "Illinois",
"zipcode": 85486,
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net",
"subscriberId": "SRH76657",
"cardNumber": "************4845",
"cardExpiration": "2024-01",
"fsv": 123456,
"paymentCardType": "Visa",
"token": 94789,
"expirationDate": "2024-06"
...
"notes": [
"lorem ipsum dolor sit amet",
"Duis aute irure dolor in reprehenderit"
]
}
```
#### Notes:
- Do users also have Bank account info?
Returns
```json
{
"status": 200,
"message": "Success"
}
```
### Save search (Accounts)
Saves a performed search and create of list of previous searches
```bash
POST /save-accounts-search
```
Parameters
```json
{
"userId": "0bc7b36a-9ba9-4ce0-83f0-0a526f354e07",
"data": {
"date": "2021-02-05T10:18:13-05:00",
"division": [1,2,3],
"type": ["paypal"],
"source": [1],
"lastName": "Robertson"
"city": "Santa Ana",
...
}
}
```
Returns
```json
{
"status": 200,
"message": "Success"
}
```
<br>
---
## Users
### List All Users
```bash
GET /users
```
Returns
```json
{
"status": 200,
"message": "Success",
"data": [
{
"id": "0bc7b36a-9ba9-4ce0-83f0-0a526f354e07",
"userName": "d.robertson",
"firstName": "Daniel",
"lastName": "Robertson",
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net"
"timezone": "GMT -5",
"lastLogon": "2021-02-05T10:18:13-05:00",
"paswwordChanged": "2021-02-05T10:18:13-05:00",
"userType": "user",
"department": "Sales",
"status": 1,
"permissions": [
{
"division": 1,
"read": true,
"sale": false,
"void": true,
"credit": false,
"accounts": false,
"batch": false,
"creditLimit": 0,
},
{
"division": 3,
"read": true,
"sale": true,
"void": true,
"credit": true,
"accounts": true,
"batch": true,
"creditLimit": 200,
}
],
"notes": [
...
]
},
{
...
},
{
...
}
]
}
```
### Search Users
Get user information based on the given criteria
```bash
GET /users?username=admin123
&userType=admin
&firstName=Daniel
&lastName=Robertson
&phone=6035550123
&email=d.robertson@comcast.net
```
Returns
```json
{
"status": 200,
"message": "Success",
"data": [
{
"id": "0bc7b36a-9ba9-4ce0-83f0-0a526f354e07",
"userName": "d.robertson",
"firstName": "Daniel",
"lastName": "Robertson",
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net",
"timezone": "GMT -5",
"lastLogon": "2021-02-05T10:18:13-05:00",
"paswwordChanged": "2021-02-05T10:18:13-05:00",
"userType": "user",
"department": "Sales",
"status": 1,
"permissions": [
{
"division": 1,
"read": true,
"sale": false,
"void": true,
"credit": false,
"accounts": false,
"batch": false,
"creditLimit": 0,
},
{
"division": 3,
"read": true,
"sale": true,
"void": true,
"credit": true,
"accounts": true,
"batch": true,
"creditLimit": 200,
}
],
"notes": [
...
]
}
]
}
```
### Create User (User)
Creates a new regular user
```bash
POST /create-user
```
Parameters
```json
{
"userName": "d.robertson",
"firstName": "Daniel",
"lastName": "Robertson",
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net",
"timezone": "GMT -5",
"userType": "user",
"department": "Sales",
"status": "active"
"permissions": [
{
"division": 1,
"read": true,
"sale": false,
"void": true,
"credit": false,
"accounts": false,
"batch": false,
"creditLimit": 0,
},
{
"division": 3,
"read": true,
"sale": true,
"void": true,
"credit": true,
"accounts": true,
"batch": true,
"creditLimit": 200,
}
],
"notes": [
...
]
}
```
Returns
```json
{
"status": 200,
"message": "Success"
}
```
### Create User (Admin)
Creates an admin user
```bash
POST /create-admin
```
Parameters
```json
{
"id": "0bc7b36a-9ba9-4ce0-83f0-0a526f354e07",
"userName": "d.robertson",
"password": "*****",
"confirmPassword": "*****",
"firstName": "Daniel",
"lastName": "Robertson",
"phone": "(603) 555-0123",
"email": "d.robertson@comcast.net",
"timezone": "GMT -5",
"department": "Sales",
"userType": "admin",
"status": "active"
"notes": [
...
]
}
```
Returns
```json
{
"status": 200,
"message": "Success"
}
```
### Update User
```bash
PATCH /user/:id
```
Parameters
```json
{
"first_name": "Admin",
"last_name": "User",
"email": "admin@example.com",
"phone": "123123123",
"userType": "admin",
"username": "admin123",
"password": "**********",
"status": "active"
}
```
#### Notes:
- Regular users and admin users have different fields
- Admin users have password while regular users don't, is there a reason for that?
- Do admins need permissions by division as well?
<br>
---
## Reports
### Get Recurrent Reports
Gets all recurring reports
```bash
GET /recurring-reports
```
Returns
```json
{
[
{
"reportName": "Report Name 1",
"date": "2021-02-05T10:18:13-05:00",
"division": [1,2,3],
"type": ["paypal"],
"source": [1],
"lastName": "Robertson"
"city": "Santa Ana",
...
"recurrenceStartDate": "2021-02-05T10:18:13-05:00",
"recurrenceRepeat*": "4 weeks",
"recurrenceStartDate": "2021-02-05T10:18:13-05:00",
"sendTo": "cedennar@sbcglobal.com",
"reportType": "Payments"
},
{
...
}
]
}
```
\* How to format this field
### Create Recurring Reports
Creates a recurring report with the given criteria
```bash
POST /recurring-reports
```
Returns
```json
{
[
{
"reportName": "Report Name 1",
"date": "2021-02-05T10:18:13-05:00",
"division": [1,2,3],
"type": ["paypal"],
"source": [1],
"lastName": "Robertson"
"city": "Santa Ana",
...
"recurrenceStartDate": "2021-02-05T10:18:13-05:00",
"recurrenceRepeat*": "4 weeks",
"recurrenceStartDate": "2021-02-05T10:18:13-05:00",
"sendTo": "cedennar@sbcglobal.com",
"reportType": "Payments"
},
{
...
}
]
}
```
### Get Deposit Reports
Gets all deposit reports
```bash
GET /deposit-reports
```
Returns
```json
{
[
{
"date": "2021-02-05T10:18:13-05:00",
"dateRange": "2021-02-05T10:18:13-05:00, 2021-02-06T10:18:13-05:00",
"cashboxes*": [1, 2, 3],
"data": [
{
"cashbox": 1,
"depositDate": "2021-02-05",
"type": "Lorem ipsum",
"status": "Active",
"totalCount": 1234.50,
"totalAmount": 1234.50,
"debitCount": 750.23,
},
{
"cashbox": 2,
"depositDate": "2021-02-05",
"type": "Lorem ipsum",
"status": "Active",
"totalCount**": 550.00,
"totalAmount**": 550.00,
"debitCount**": 250.00,
}
]
},
{
...
}
]
}
```
### Create Deposit Reports
Creates a new deposit report
```bash
POST /deposit-reports
```
Returns
```json
{
[
{
"dateRange": "2021-02-05T10:18:13-05:00, 2021-02-06T10:18:13-05:00",
"cashboxes*": [1, 2, 3],
},
{
...
}
]
}
```
#### Notes
\* Where can we get the cashboxes data from?
\* Can we create those cashboxes? Where do we create those
\** How are these values being calculated