Kilometertje - Wat heeft een API nodig?

Door DennusB op dinsdag 20 mei 2014 08:19 - Reacties (22)
Categorie: -, Views: 5.949

Hey Tweakers,

Zoals jullie misschien in mijn vorige blogs hebben gelezen ben ik (en zijn we, van mijn bedrijf) druk met Kilometertje.nl. Een website voor gratis rittenregistratie.
Er zitten weer erg gave features aan te komen en de belangrijkste is de API. Elke user krijgt een API key en kan daarmee gezellig tegen onze JSON api aankletsen straks.

En omdat hier volop technische mensen rondlopen heb ik de vraag aan jullie :

Waar moet een API aan voldoen? Wat moet hij kunnen en welke functies moet er in zitten?

Wat we zelf al hebben :

- Het controleren van een API key met het teruggeven van de bijbehorende username
- Het inschieten van een rit
- Het opvragen van een rit
- Het opvragen van een ritlijst

Ik hoop dat jullie nog wat toevoegingen hebben zodat we dat mee kunnen nemen bij de eerste API release en iedereen zelf aan de slag kan met Kilometertje.
Ander goed nieuws, we hebben ondertussen contact met een Android developer die zich bezig gaat houden met een Kilometertje App. Mochten er hier Windows Phone / Blackberry / iOS developers rondlopen die geinteresseerd zijn in het maken van een Kilometertje app, neem dan even contact met me op via DM of dennis@deyron.nl !

Thanks alvast voor jullie input!

Volgende: Kilometertje - Alweer een update 05-'14 Kilometertje - Alweer een update
Volgende: Kilometertje.nl uit gesloten beta 05-'14 Kilometertje.nl uit gesloten beta

Reacties


Door Tweakers user i-chat, dinsdag 20 mei 2014 09:03

ik zou mischien overwegen om het mogelijk te maken 3rd party files (bijv) pdfs, hieraan te linken, dan kun je gelijk de ingescande bonnetjes etc (als je geen tankpas hebt), aan je rit toevoegen, over de hosting van dergelijke files zou ik me niet al te druk maken, dropbox ownclowd onedrive, copycom en ga zo maar door, er is bijna altijd wel iets van remote storage aanwezig op je telefoon...

ik snap dat het feitelijk intergreren van dergelijke services in de app thuis hoort, maar je zult dan in de api wel iets van een referer moeten kunnen toevoegen zodat dergelijke informatie ook in de webview wordt opgenomen. een link naar de locatie van dergelijke bestanden, met eventueel de mogelijkheden een korte (100tekens) descrition toe te voegen, zou genoeg moeten zijn. ook het maken van notities en dergelijken of wellicht het koppelen aan 'online agenda events' horen dan tot de mogelijkheden.

[Reactie gewijzigd op dinsdag 20 mei 2014 09:06]


Door Tweakers user DennusB, dinsdag 20 mei 2014 09:05

i-chat schreef op dinsdag 20 mei 2014 @ 09:03:
ik zou mischien overwegen om het mogelijk te maken 3rd party files (bijv) pdfs, hieraan te linken, dan kun je gelijk de ingescande bonnetjes etc (als je geen tankpas hebt), aan je rit toevoegen, over de hosting van dergelijke files zou ik me niet al te druk maken, dropbox ownclowd onedrive, er is bijna altijde wel iets van een remote storage aanwezig, te zijn,

ik snap dat het feitelijk intergeren van dergelijke services in de app thuis hoort, maar je zult dan in de api wel iets van een referer moeten kunnen toevoegen naar de locatie van dergelijke bestanden. ook het maken van notities en dergelijken of wellicht het koppelen aan 'online agenda events' horen dan tot de mogelijkheden.
Dat is een goed idee, ik zat al te spelen met het opslaan van files bij ritten inderdaad. Misschien kunnen we dat gewoon laten posten naar de API en op onze eigen servers opslaan, dan kan het allemaal op 1 centraal punt. Het maken van notities kan al en het koppelen aan een agenda is denk ik client-side (aan de app kant)?

Door Tweakers user Korben, dinsdag 20 mei 2014 09:11

- Het controleren van een API key met het teruggeven van de bijbehorende username
Dat klinkt als een gapend beveiligingsgat. Sowieso is het met een publieke API slim om een login failure delay in te bouwen, zodat er niet kan worden ge-bruteforced. Als je API-key lang genoeg en random genoeg is, zal er geen twijfel over bestaan dat een bepaalde API-key bij een bepaalde user hoort, dus het is overbodig om de username terug te geven.

Door Tweakers user i-chat, dinsdag 20 mei 2014 09:13

*en het koppelen aan een agenda is denk ik client-side (aan de app kant)?, *

dat hangt af van tootset, als je die kopelingen alleen voor eigen gebruik maakt, dan is het idd alleen aan de app side, maar dan moet je uiteindelijk alsnog dergelijke informatie exporteren om er een kilometer verklaring van te maken, voor mij waren het dan wel treinkaartjes, maar ik vond het bijzonder prettig dat ik afspraken uit mijn publieke agenda na afloop kon exporteren, en samen met mijn urenregistratie EN kilometer registratie op 1 plaats kon bewaren, het probleem wat je hebt is dat dit al snel 'buiten de target, van je platform zal vallen' en daarom zou ik ook het linken aan externe bronnen willen aanmoedigen, want in eerste instantie zou ik bij dit soort koppelingen denken aan meta-informatie en dan pas aan welke informatie je zelf zou moeten (willen) hosten.

Door Tweakers user DennusB, dinsdag 20 mei 2014 09:14

Korben schreef op dinsdag 20 mei 2014 @ 09:11:
[...]

Dat klinkt als een gapend beveiligingsgat. Sowieso is het met een publieke API slim om een login failure delay in te bouwen, zodat er niet kan worden ge-bruteforced. Als je API-key lang genoeg en random genoeg is, zal er geen twijfel over bestaan dat een bepaalde API-key bij een bepaalde user hoort, dus het is overbodig om de username terug te geven.
Ja, is dat een beveiligingsgat? De API key is niet echt makkelijk te raden. Wel komt er uiteraard een delay in als het checken van de API key fout gaat.

Misschien is het dan een betere optie om api-key en username te posten naar de API en op die manier te checken of de gegevens kloppen?

Door Tweakers user Reinstein, dinsdag 20 mei 2014 14:26

Een API versie/revisie nummer is ook altijd erg handig.

Door Tweakers user DennusB, dinsdag 20 mei 2014 14:30

Reinstein schreef op dinsdag 20 mei 2014 @ 14:26:
Een API versie/revisie nummer is ook altijd erg handig.
En die dan terug laten geven bij elk API request bedoel je?

Door Tweakers user ongewoongewoon, dinsdag 20 mei 2014 15:24

DennusB schreef op dinsdag 20 mei 2014 @ 14:30:
[...]


En die dan terug laten geven bij elk API request bedoel je?
Je zou het kunnen meegeven wanneer je een bepaalde parameter meegeeft bij je request :)

Door Tweakers user DennusB, dinsdag 20 mei 2014 15:26

ongewoongewoon schreef op dinsdag 20 mei 2014 @ 15:24:
[...]

Je zou het kunnen meegeven wanneer je een bepaalde parameter meegeeft bij je request :)
Goed idee! Bouwen we zeker in!

Door Tweakers user matty___, dinsdag 20 mei 2014 16:01

DennusB schreef op dinsdag 20 mei 2014 @ 14:30:
[...]


En die dan terug laten geven bij elk API request bedoel je?
je kunt het ook in de url inbouwen voor backwards compat: /api/1.0/...

Door Tweakers user pBook, dinsdag 20 mei 2014 18:04

Ik zou als basis voor je API Oauth2 gebruiken:
https://github.com/thephpleague/oauth2-server

Door Tweakers user ReW, dinsdag 20 mei 2014 18:17

Ik ben het met matty eens.

Door Tweakers user ongewoongewoon, woensdag 21 mei 2014 08:33

matty___ schreef op dinsdag 20 mei 2014 @ 16:01:
[...]

je kunt het ook in de url inbouwen voor backwards compat: /api/1.0/...
Dat is nog een beter plan inderdaad :)

Door Tweakers user DennusB, woensdag 21 mei 2014 09:02

ongewoongewoon schreef op woensdag 21 mei 2014 @ 08:33:
[...]

Dat is nog een beter plan inderdaad :)
Klinkt inderdaad goed :) We zullen dat meenemen in de api!

Door Anton Vink, woensdag 21 mei 2014 09:36

Misschien voor de app leuk om cordova/phonegap te gebruiken. Je hebt al een ontwerp voor de mobiele versie dan is het enkel taak om de API requests door Javascript af te handelen en je hebt een leuke multiplatform APP.

BB, WP, Android en iOS worden door cordova out-the-box ondersteund.

Door Tweakers user DennusB, woensdag 21 mei 2014 09:41

Anton Vink schreef op woensdag 21 mei 2014 @ 09:36:
Misschien voor de app leuk om cordova/phonegap te gebruiken. Je hebt al een ontwerp voor de mobiele versie dan is het enkel taak om de API requests door Javascript af te handelen en je hebt een leuke multiplatform APP.

BB, WP, Android en iOS worden door cordova out-the-box ondersteund.
Hoi,

We zijn enorm geinteresseerd in Cordova maar hebben er eerlijk gezegd nog geen ervaring mee. We kunnen/gaan het dus wel proberen, maar mocht je interesse hebben om te helpen of om ons wat tips te geven dan zou ik dat zeer waarderen!

Door Tweakers user ongewoongewoon, woensdag 21 mei 2014 12:02

Anton Vink schreef op woensdag 21 mei 2014 @ 09:36:
Misschien voor de app leuk om cordova/phonegap te gebruiken. Je hebt al een ontwerp voor de mobiele versie dan is het enkel taak om de API requests door Javascript af te handelen en je hebt een leuke multiplatform APP.

BB, WP, Android en iOS worden door cordova out-the-box ondersteund.
Titanium werkt ook fijn (Javascript) , helaas is er nog geen WP support tot de volgende release (TI.Next). JSON ophalen en verwerken is kinderlijk simpel :) (Dit kan bij de andere opties natuurlijk net zo simpel zijn , geen ervaring mee ;-) )

[Reactie gewijzigd op woensdag 21 mei 2014 12:05]


Door Tweakers user DennusB, woensdag 21 mei 2014 12:12

ongewoongewoon schreef op woensdag 21 mei 2014 @ 12:02:
[...]
Titanium werkt ook fijn (Javascript) , helaas is er nog geen WP support tot de volgende release (TI.Next). JSON ophalen en verwerken is kinderlijk simpel :) (Dit kan bij de andere opties natuurlijk net zo simpel zijn , geen ervaring mee ;-) )
Top! Nemen we zeker mee. We zijn druk in gesprek met wat mensen ook die ons misschien kunnen helpen bij het maken van apps :)

Door Tweakers user sfranken, woensdag 21 mei 2014 18:27

Een lijst van ritten onder een bepaaalde groep? Dit is af te vangen door de API key -> user check te laten controleren of user X in groep Y zit en of user X rechten Z (in dit geval list ritten) heeft.

Door Tweakers user DennusB, woensdag 21 mei 2014 22:34

sfranken schreef op woensdag 21 mei 2014 @ 18:27:
Een lijst van ritten onder een bepaaalde groep? Dit is af te vangen door de API key -> user check te laten controleren of user X in groep Y zit en of user X rechten Z (in dit geval list ritten) heeft.
Gedeelde auto's zit momenteel nog niet in Kilometertje. Staat wel op de planning dus komt er zeker aan :)

Door Smithd674, zaterdag 24 mei 2014 14:11

You must indulge in a contest for among the greatest blogs over the internet. Ill suggest this web website! ekbdeeedcgdcdede

Door Pharmf24, zondag 25 mei 2014 06:59

Very nice site!

Reageren is niet meer mogelijk