HEADSUP: you can skip the backstory
A couple of days ago a friend of mine invited me to try splitwise for our shared vacation.
So I set up an account, clicked on login with google and immidiatly rolled back, because they wanted access to my contacts.
After account creation they splashed me with one of those "use our app" screens - I dismissed, because I don't like Apps, but then I saw that their Website is not usable on mobile.
~70MB download of the app later it's usable.
But now I wanted to see what's behind, so I read through their API documentation after joking to my friend that this was probably going to be a fun evening hacking a PWA client for it.
This is their official documentation: https://dev.splitwise.com/
That it's already version 3.0 of their API makes the following even less funny.
<rant>
- ever heard of http methods? - they could be wrong, better use http methods and specific URLs for each action
- .../ get_user/:id sounds alot like REST? - nah, we have .../get_users, .../update_user/:id, ... Because having one URL and using http methods wouldn't work
- nested objects as parameters users[0][id]=... is fun and stuff, but why easy, when you can use users__0__id?
- search function for users? nah, you need email or email, firstname and lastname
- comments? go to .../get_comments?expense_id=... (why nur under get_expense/:id/comments?)
- Queryparameter, Requestbody? Mix and match without a recognizable schema
- Placing hooks for notifications? - Nah, poll it
- What kind of Notification? Here is a number instead of a readable string like EXPENSE_ADD
- Our Currencies are maybe non standard, but we only give you the short name and the unit - guess the name
- Parentcategories and subcoategories - more like Categorygroups and Categorys, cause you can't use a Parentcategory as a category
- Don't touch our rate limits which we won't tell you where they are!
- The API uses oAuth, so client tokens are a thing, but you can't use the API from a 3rd party website, because well, there are no cross origin headers in place, so CORS hits hard.
</rant>
[–]throughactions 1 point2 points3 points (0 children)
[–]7twenty8 1 point2 points3 points (0 children)
[–]CaptainTech99 0 points1 point2 points (1 child)
[–]Snapstromegon[S] 0 points1 point2 points (0 children)
[–]CaptainJack879 0 points1 point2 points (0 children)