I've been bootstrapping a concept that shares "the personal API" concept for 12 months now with a team of three and we're going to launch it in a couple of weeks.
Since other services' API rate limits and terms makes depending on them nearly impossible at scale, we decided to give everyone an API and a database.
The database stores data in community-driven schemas called the JSON Archetypes: https://github.com/servant-app/json-archetypes.
The project is Servant -- The Amazing Personal Database (https://www.servant.co)
Anyway, I just starred the Me API. I'm in Oakland, if you're nearby, and you can contact me whenever you like: austen [at] servant.co I just like hanging with similar thinkers.
Some background info: I was reflecting the other day on just how proprietary our online information seems. Maybe not proprietary, but definitely disjointed. We go to Twitter for social blurbs and trends, we go to Facebook to see our friends, Pinterest to see our interests, Github to see our code, etc etc.
I thought there was a big gap in getting access control to this information and that there are extremely powerful ways we can leverage all of this information. This essentially bootstraps the entire process of going through each social network's API and puts it in your hands. I think some interesting interfaces could come out of such an idea, although I'm not sure how well my implementation has allowed for that.
All in all, please give your feedback. I want to know areas where this is lacking, where you might see hidden opportunities - any reflection is appreciated!
It was a bit overreaching and ultimately why I dropped it. I was struggling with the looming "adoption" issues of how do I get a social service to implement this. But if it was combined with something like this, that piggybacks on the way things are today adoption by users wouldn't require adoption by social services and change could be pushed for more gradually.
Awesome work. I look forward to setting it up and trying it out.
I'm getting an 'Application Error' on the endpoints
There's a possibility for analytics that pulls data from all sources instead of just once (health analytics, IoT data).
There's a possibility for communication -- instead of email, maybe people could communicate through these endpoints.
All of these are just stubs of ideas, but you have a very good point. The largest use case is probably in visually representing your online data.
Here's mine on github: https://github.com/lukemiles/api.lukemil.es
Here's my website which is powered by it: https://lukemil.es/is/ (sleep endpoint is currently disabled).
I was surprised the readme in the project doesn't mention it.
I was thinking about the same problem a few weeks back when LinkedIn was s̶c̶r̶e̶w̶e̶i̶n̶g̶ ̶o̶v̶e̶r̶ ̶d̶e̶v̶e̶l̶o̶p̶e̶r̶s̶ improving their users experience. It's basically a fancy online resume with a graph that connects to so many people now that it's a crapshoot if people actually remember how they got connected in the first place. But I digress.
Thinking about how this sort of framework you've developed might be useful for an aggregated profile that can then be opened up as a proxy to various service/apps instead of actually giving direct access to your accounts (maybe have something like IFTTT to import your various social profile info into the Me API as it is updated):
- Hate to allow apps to see all your github repos? Filter it via this service.
- Dislike giving random apps access to your facebook likes, profile and other info? - use this service as a proxy to only present the info you feel comfortable with (maybe a maximum of 5 posts, or posts within a certain area/geofence, etc). Basically, you can create app permissions that are more granular than Facebook's out of the box preferences.
Of course - all this would need support from apps to tap into this data source (the Me API). It's an interesting idea.
Taking this a step further - I think it would be cool if it was somehow possible to obfuscate my identity - while sharing SOME of the "Me API" data with other services.
Some examples I'm thinking of (which may not be really possible - I realize the data provided could provide enough clues to be used to "uncover" my identity by piecing the datapoints together):
- Allow a photo editing app to pull my SmugMug photos through the Me API endpoint, but keep my SmugMug account info obfuscated (ie: do not provide direct URL to my smugmug site's photos), but still pass over my actual photos.
- Allow a mapping/analysis application to access my Yelp reviews by location, without knowing my actual yelp account info/nickname.
- Pass over my LinkedIn graph (that I've manually downloaded as a CSV and ported into my Me API datastore) without providing access to my LinkedIn name or profile info. This could be used to help friends find jobs - without exposing my identity to a random webservice.
- Pass over all my Google map searches/saved locations but don't provide any that are within 100 miles (+- 10 miles) of my home. Provide access to my phone number area code, but not my email address. etc.
The Larger Idea here:
There are apps that can use your data to provide useful results/info/insights but ultimately the user (Me) should retain how much info is in fact exposed to the service. Maybe the service only gets a HashID or a Nickname - but can access a bunch of data that I give permission for it to access. Another application may get my whole profile, but not detailed transaction data. The webapps that leverage my profile info should "own" the graph of data they collect from Me and Others - but the user (Me) controls how identifying it is.
Sorry for the rambling, hopefully this isn't too crazy or off the wall. Either way - great idea and thanks for sharing!
I think it'd be difficult to get enough external services to integrate into the personal service for grabbing Github/Yelp/etc. data. There'd have to be a standard of some sort that people were willing to build with. External services that want your data will ask you to oauth directly to Github et. all, or go around you to figure out who you are instead and then scraping pages.
You'd need enough people demanding to keep their data private to make it worth apps' time to do that.