The project is to build an API on the web (SaaS) that would provide the following functions (function names are just example to illustrate) Of course, there should be some authentication mechanism to the API prior to using the above functions. Basically, authenticating to the API would allow access to query only certain groupnames to which the user has access. List of users is represented by table "AuthUsers" in database example schema I was thinking about Perl and Catalyst framework, since i know Perl and can review or add my own stuff later, but if you have better suggestions, please feel free to mention it.
## Deliverables
The project is to build an API on the web (SaaS) that would provide the following functions (function names are just example to illustrate) - create_group(): input(groupname) - simply create an groupname record in database (see database schema for better understanding) - add_name_to_group(): input(groupname, name) - add a name record in database referring to a groupname record - delete_group(): input(groupname, name) - delete the group and all associated names belonging to the group. also works only in database - delete_name(): input(groupname, name) - the opposite of add_name_to_group() - get_names_for_group(): input(groupname) output(list of names, count) - take a groupname, search for it in database, and return all the names belonging to the group that have a count>0, and their count (See database schema for better understanding) get_list_of_files_for_name(): input(name, groupname) output(list of files) - this would check in database the files for this name and return the list of files or some URL to retrieve them, depending of what is possible to transmit files directly though the API interface (see below function get_file() ) - get_file(): input(filename or url) - maybe this function does not exist depending of if it is possible to transmit binary files though API protocol (you tell me) - set_nickname(): input(groupname, name, nickname) - Set a nickname associated to a name - set_nickname(): input(groupname, name) output(nickname) - Generate a nickname associated to a name - get_nickname(): input(groupname, name) output(nickname) - Get the nickname associated to a name - set_file_types(): input(groupname, list of file types) - set a list of file types that the group is authorised to have Of course, there should be some authentication mechanism to the API prior to using the above functions. Basically, authenticating to the API would allow access to query only certain groupnames to which the user has access. List of users is represented by table "AuthUsers" in database example schema At this point, i do not think about any visible part, this is just an online API, not a website. Or maybe the managements of groups or file types (create_group, delete_group, set_file_types) could have a web page to be able to the same as the API, but manually and visually. I was thinking about Perl and Catalyst framework, since i know Perl and can review or add my own stuff later, but if you have better suggestions, please feel free to mention it. Also, i do not know exactly how an API or RPC is implemented; REST,SOAP,RPC, ? Please provide your experience on the technology to use. This should be something that developers of web sites, applications or mobiles applications can interact easily.