The Unified Passport API

This proposal has been in my mind for quite a long time, but it hasn't been until today... after more than 24 hours of airports and planes, that I have had time to put this ideas together (specially after noticing how useful would have been during this abnormally long journey).

It all comes from the undeniable fact that, during flights, you are required to fill out many forms that usually ask the same things. Since I hate repeating myself (almost as I hate people repeating things to me) and since the number of forms to fill increases dramatically with each transfer you go through, I came up with a novel idea: having a Bluetooth enabled Passport. That is, your passport would no longer be an archane booklet with a lot of stamps on it, but an electronic device which would store all the personal information required to travel around the world. It would be able to automatically fill form details that are included in the information, leaving you the task to fill only very specific information like the number of children traveling with you and stuff like that. This information would be available to all electronic forms you need to fill through a common API that could query your passport for information.

Furhtermore, the Passport API would also have a language negotiation protocol, which would allow you to know in advance what's the best language to communicate with personnel in the airport and the airplane crew. That protocol would work just like authentication protocols among mail servers and mail clients: listing available languages from both parties in order of preference and finding the top ranked match. For instance, I once went to buy a pizza slice at an airport in New York and it was actually complicated to make the pizza guy understand what I was asking for. Then the family next to me spoke to him in spanish... and it all became clear to me then. Conversely, I went to a clerk at Amsterdam's airport to ask for a location, and he replied back to me in arab. I, of course, speak no arab but it's pretty well known that my face is kind of arabic. If we had a way to negotiate languages before communicating at airports, those kinds of confusions would be pretty much solved (except for the fact that it is virtually impossible to support all languages in a single airport).

So the function calls of the API are yet to be decided, but I propose this initial Java-based specification:

[code lang="java"]
class PassportAPI
enum PassportType { ORDINARY, DIPLOMATIC };

public String getPasssportId();
public PassportType getPassportType();
public Date getExpeditionDate();
public Date getExpirationDate();

public String getLastName();
public String getFirstName();
public String getFullName();

public String getCountry();
public String getHomeCountry();

public List getVisitedAirports();

public List getVisas();

public List getLanguages();

class Airport
public String getAirportCode();
public String getAirportId();
public Country getCountry();

class AirportStamp
enum AirportStampType { ENTERING, LEAVING };

Airport getAirport();
Date getDate();
AirportStampType getType();

class Visa
Country getCountry();
String getType();
Date getExpeditionDate();
Date getExpirationDate();

There are of course some security concerns to take into account, but I think this settles the basic idea of the whole thing. After having an API specification, there would be a family of devices that would use this specification to query information to fill, e.g., electronic forms like those at customs and migration, plus the language negotitation scenario previously discussed.

I know you are thinking this post and the whole idea is plain BS, but believe me... I know it is :D