Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Me API – turn yourself into an open API (github.com/danfang)
91 points by danfang on May 28, 2015 | hide | past | favorite | 29 comments



Dan -- the themes and ideas behind this are rad and I'd love to chat with you to find out more about what you'd like to do with this.

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.

Cheers


Hey, this is really cool! There are a couple of key differences between the two services (mine doesn't aim to be a service), but I see a lot of common themes as well. I'll definitely keep track of Servant in the coming months.


I assume you are hosting these personal databases?


Yes


Hey guys! Thanks for checking out my little project.

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!


This is awesome. I started working on something very similar about a year and a half ago (but of course dropped the ball on it) that was based on oauth2.0 but followed a model somewhat reverse of what we are used to. It setup the user as the oauth provider so they could control the permissions when authenticating with a "social service". The social service would request what permissions it required from you and then retrieve the information you allowed it. It would also be required that any information that you publish to the site be published back to your repository. ie. you post an image to Instagram (assuming Instagram would ever implement this) and Instagram would also save it to your repository.

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.


Very cool space to play around in. You should check out Naveen's personal site (foursquare founder) as he was playing around with something similar for his own data a few years ago:

http://api.naveen.com/


There was also the Locker Project (http://lockerproject.org/), which I was keen to use and contribute to, but it stalled years ago.


I saw that and was glad that people supported a similar idea. I think this is better though - it opens up that portal for everyone. It also opens it up in a way that people in the open source community can build on it (extra modules that is).


Does it work for you?

I'm getting an 'Application Error' on the endpoints


can you give an example where this would be useful besides if you were building a website?


I think getting to be the authority on your information would be awesome. If people hooked into your API instead of vice versa, you rarely have to update your information in more than one place. Address changes, place of work, DOB (?) - maybe these could all be achieved through an API for yourself.

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.


perhaps if you wanted to create a hybrid social network? say a user signs up, but all of their content is in one place?


I had a similar idea -- however yours definitely is way more polished, especially during the setup phase. I definitely share your ideas of data liberation and open access. I've been meaning to add more endpoints to mine, but perhaps I'll move over to yours and just port the missing endpoints over.

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).


Can we just call it finger2? Or json-finger? I mean, that's what it really is, just adjusted for today's reality.

I was surprised the readme in the project doesn't mention it.


Hmmm, I never really thought of it like finger - that's a good analogy! I think there is potential for many other use cases rather than just for others viewing information about you though.


Related: WebFinger (https://webfinger.net/)


OP might be too young to know what fingering (heh heh) means. :)


Very cool! Any thoughts about making it two-way at some point? For example, make sure that every network is updated if you change your name or email address.


Or, if you already have a personal website, why not just use something like FOAF [1] via RDFa [2]? (granted, jCard is ugly)

[1] http://xmlns.com/foaf/spec/

[2] https://en.wikipedia.org/wiki/RDFa#Examples


This is super cool. I never encountered something like this before, but seeing the comments, it seems there are a bunch of them out there. Will surely build mine.


To make the schema a little bit more generic, have you considered changing the 'tech' node to 'skills'? Non-tech people could use it then.


Hey Junto, it's a completely open schema as of right now. Feel free to add whatever fields you wish and render them as you will! What I have is just a template that works for me - think of me.json kind of like json-server, but all about you.


Anyone interested in this might look at http://indiewebcamp.com/


I think this is a fabulous idea. I will caveat that I don't code (yet) but can follow along several of the examples and I think I "get it"...let me know if anything below is BS/way off.

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 really like this idea FWIW. That said, there's some big barriers to making it a reality.

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.


This is a brilliant idea! An xprivacy-style social reverse proxy might just be what we need in this increasingly centralized world. @win_ini I am interested in contacting you to discuss this further, detail's in my profile.


Clearbit is another similar Service.


It is? Doesn't look like it. Looks like this is about turning your own data into an API, not another company selling data about you.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: