add request model

- with tests
Merge pull request #3 from thefury/feature/add_request_model

add request model