This project (a work in progress) represents a simple payroll database/API for managing contract-based work, built on Postgres and Flask. It is designed with theater, movie and television stagehands in mind but should be flexible enough to use for other fields where work is paid at different rates to multiple employees by contract or "gig". It will keep records of employees, contract assignments, hours worked, paychecks and more. It is NOT secure or production ready and should not be used to store real data.
Method | Route | Description |
---|---|---|
GET | /user | Show all user accounts. Password hashes are not displayed. |
POST, PUT | /user | Add a new user account. Request body must include username and password , can optionally include email address. |
DELETE | /user/:id | Delete user account. |
POST, PUT | /user/:id | Modify user account. Request body may include new email , username and/or password . |
Method | Route | Description |
---|---|---|
GET | /employee | Show all employee IDs, including any assigned workroles. PII is not displayed. |
POST, PUT | /employee | Add a new employee to the database. Request body may include ssn , first_name , last_name and/or user_id . |
POST, PUT | /employee/:id | Modify employee data. Request body may include new ssn , first_name , last_name and/or user_id . |
Method | Route | Description |
---|---|---|
GET | /client | Show all client company names. |
POST, PUT | /client | Add a new client to the database. Request body must consist of company_name . |
POST, PUT | /client/:id | Modify client name. Request body must consist of company_name . |
Method | Route | Description |
---|---|---|
GET | /contract | Show all contracts. |
POST, PUT | /contract | Add a new contract to the database. Request body must include client_id . It may include start_date , end_date , and/or contract_description . |
POST, PUT | /contract/:id | Modify contract. Request body may include start_date , end_date , and/or contract_description . |
Method | Route | Description |
---|---|---|
GET | /workrole | Show all workroles, including IDs of any assigned employees. |
POST, PUT | /workrole | Add a new workrole to the database. Request body must include contract_id . It may include workrole_description , hour_budget , hourly_pay , hourly_deduction . |
POST, PUT | /workrole/:id | Modify contract. Request body may include workrole_description , hour_budget , hourly_pay , hourly_deduction . |
Method | Route | Description |
---|---|---|
POST, PUT | /employee-workrole | Assign employees to workroles. Request must include a list of at least one employee_ids and a list of at least one workrole_ids . All listed employees will be added to all workroles (E.g. If employee_ids is [1, 2]" and workrole_ids [3, 4] then both employees will be added to both workroles.) Returns a dictionary with updated records of relevant employees and workroles. |
DELETE | /employee-workrole/ | Delete employees from workroles. Request must include a list of at least one employee_ids and a list of at least one workrole_ids . All listed employees will be added to all workroles (E.g. If employee_ids is [1, 2]" and workrole_ids [3, 4] then both employees will be deleted from both workroles if present. Returns a dictionary with updated records of relevant employees and workroles.) |
/timeworked, /paycheck