What Does URI Stand For?

I get a lot of complaints about an API that I maintain (http://api.joind.in) which is “missing” the ID field. This ID field is the database’s primary key; if the user doesn’t have access to the database (they don’t), then it seems to me that the primary key probably isn’t all that useful.

Instead, the API publishes each record with a unique uri field. If this record is referred to by another record, then this full identifier will be used in every case. If this record should be included in a collection, this exact same identifier will be used there, too. You can reach the resource directly by requesting its URI. In the same way that we might refer to a website by its URL, we refer to records in RESTful systems by their URI*. If you need to store these somewhere for your own use, you can use whatever key you like with the local storage, you may even choose to use the uri field as it is unique.

* URI stands for Unique Resource Identifier