I guess you need to confirm the entities that are affected - as mentioned earlier, it looks like you'll need to consider uploading to various entities.
I would assume:
email address held in person entity
phone held in phones entity
location held in assignment entity
I would also assume there is never the requirement to create an entity from scratch, although I accept that might not be a valid assumption!
Updating the person record, for example, would involve use of hr_person_api.update_person
With all these update apis, you supply the effective date, the primary id of the record(e.g. person_id), the effective date (which by the sound of it will always be trunc(sysdate), the object version number of the record as at that date, and the date-track mode (where the entity requires it - not phones, oddly enough) - typically this would be 'UPDATE' all the time, although there could easily be the need to alter that.
At the risk of being seen to try and design the solution here (never a good idea on this forum!), you have options (including Web-ADI), but if you are after a fully-automated solution, it would probably involve something, running as a periodic concurrent program, that detects that a file has been received (in a specified starting directory somewhere), then reads the contents into a custom table that then can be processed via your main uploading program(s). You might, in that custom table, also make provision to hold a status and possibly an error message (should the api have encountered any problems) against each line. Once the process has dealt with the file, move the file to some sort of archive directory, out of the way.
A bit simplistic, but it might give you some food for further thought.
_________________________
L&K
CT
Remember: A dog is for life, not just for Christmas... unless you're in Korea