Timi API Documentatie
Algemeen
Klanten
Projecten
Activititeiten
Geregistreerde uren
Authenticatie voorbeeld
Voor de Timi API moet je een Timi account hebben. Om een Timi account te maken ga je naar timiapp.com/aanmelden. Als je een account hebt kan met je unieke API token verbinding maken met onze API. Deze token kan je vinden door in te loggen en naar je profiel te gaan. Deze token gebruik je altijd in combinatie met je e-mail adres.
Je kan op twee manieren de token en het e-mail adres doorgeven, de eerste is doormiddel van Basic Auth, de andere is doormiddel van de URL parameters.
Hieronder zie je een voorbeeld van het doorgeven via de url, daarvoor gebruik je de velden token en email:
http GET 'https://timiapp.com/api/v1/[email protected]&token=abc123xyz123'
Als het inloggen niet goed gaat krijg je het volgende JSON response met een HTTP 401 code:
{
"message": "unauthorized"
}
Rate limiting
Om misbruik van de API te voorkomen hebben we rate limiting ingebouwd. Dit betekent dat je maar een beperkt aantal requests per minuut kan doen. Als je te veel requests doet krijg je een HTTP 429 code terug. Hieronder zie je een voorbeeld van een response.
{"message":"rate limit exceeded"}
Klanten
Doormiddel van deze call haal je klanten op die de gebruiker op. Een voorbeeld:
GET /api/v1/clients.json
http GET 'https://timiapp.com/api/v1/[email protected]&token=abc123xyz123'
Je krijgt dan een JSON resultaat wat er als volgt uit ziet:
[
{
"id": 618,
"name": "Klant A",
"projects": [
{
"id": 3327,
"name": "Banners",
"aliases": [
"Erik",
"Martijn",
"Wilco"
]
}
]
}
]
Projecten
Het is mogelijk om de projecten en persoonlijke aliasen op te halen.
GET /api/v1/projects.json
http GET 'https://timiapp.com/api/v1/[email protected]&token=abc123xyz123'
Je krijgt dan een JSON resultaat wat er als volgt uit ziet:
[
{
"id": 2,
"name": "Timi",
"aliases": [
"Jankees",
"Rowan",
"Tango"
]
}
]
Projecten
Projecten aanmaken via de API kan als volgt.
POST /api/v1/projects.json
http --form POST https://timiapp.com/api/v1/projects.json \
name='Nieuw project' \
active='true' \
token=abc123xyz123 \
email=info@example.com
Attribuut | Verplicht/optioneel | Uitleg |
---|---|---|
name
|
verplicht | De naam van het nieuwe project |
active
|
optioneel | Is het project actief? (of gearchiveerd) deze optie staat standaard op actief. (opties: true / false) |
Je krijgt dan een JSON resultaat wat er als volgt uit ziet:
{
"active": true,
"aliases": [],
"id": 42,
"name": "Nieuw project"
}
Het is ook mogelijk om projecten aan te passen via de API
PATCH /api/v1/projects/{ID}.json
http --form PATCH http://timi.dev/api/v1/projects/42.json \
name='Nieuwe naam' \
token=abc123xyz123 \
email=info@example.com
Je krijgt dan een JSON resultaat wat er als volgt uit ziet:
{
"active": true,
"aliases": [],
"id": 42,
"name": "Nieuwe naam"
}
Activiteiten
Het is mogelijk om de activiteiten en persoonlijke aliasen op te halen.
GET /api/v1/services.json
http GET 'https://timiapp.com/api/v1/[email protected]&token=abc123xyz123'
Je krijgt dan een JSON resultaat wat er als volgt uit ziet:
{
"id": 1,
"name": "Development",
"aliases": [
"coden",
"css",
"html",
"programmeren",
"rails"
]
}
Geregistreerde uren
Het belangrijkste object binnen Timi zijn de geregistreerde uren van een gebruiker Deze kun je ophalen met behulp van je API token (zie authenticatie).
GET /api/v1/time_entries.json
In het onderstaande voorbeeld halen we pagina 2 van de uren van een gebruiker op:
http GET 'https://timiapp.com/api/v1/[email protected]&token=abc123xyz123&page=2'
Attribuut | Verplicht/optioneel | Uitleg |
---|---|---|
date
|
optioneel | De datum voor de uren |
start_date
|
optioneel | Filter de uren vanaf deze datum |
end_date
|
optioneel | Filter de uren tot en met deze datum |
project_ids
|
optioneel | Filter de uren gebaseerd op project id (komma gescheiden) |
service_ids
|
optioneel | Filter de uren gebaseerd op service id (komma gescheiden) |
client_ids
|
optioneel | Filter de uren gebaseerd op service id (komma gescheiden) |
page
|
optioneel | De huidige pagina |
Je krijgt dan een JSON resultaat wat er als volgt uit ziet:
{
"current_page": 2,
"per_page": 100,
"total_entries": 102,
"time_entries": [
{
"id": 108085,
"body": "8 uur voor Timi gewerkt vanuit huis",
"duration": 28800,
"start_time": "",
"end_time": "",
"date": "2016-01-20",
"project": {
"id": 3327,
"name": "Website",
"client": {
"id": 1,
"name": "Timi"
}
},
"user": {
"id": 1,
"display_name": "Jankees"
}
},
{
"id": 107991,
"body": "1 uur voor Timi vanuit huis",
"duration": 3600,
"start_time": "",
"end_time": "",
"date": "2016-01-19",
"project": {
"id": 3327,
"name": "Website",
"client": {
"id": 1,
"name": "Timi"
}
},
"user": {
"id": 2,
"display_name": "Rowan"
}
}
]
}
POST /api/v1/time_entries.json
Ook de tekstherkenning van Timi is te gebruiken via de API, hieronder zie je een voorbeeld:
http --form POST https://timiapp.com/api/v1/time_entries.json \
accept:application/json \
content-type:application/x-www-form-urlencoded \
body='2,5 uur met Rowan aan Timi gewerkt' \
token=abc123xyz123 \
email=info@example.com
Attribuut | Verplicht/optioneel | Uitleg |
---|---|---|
body
|
verplicht | Dit is de tekst waarop Timi tekstherkenning toepast |
date
|
optioneel | Dit is de datum van de registratie, bijvoorbeeld 27-03-2016 |
service_id
|
optioneel | Dit is het
id
van de activiteit die je wil gebruiken (dit overschrijft de activiteit die gevonden is
door de tekstherkenning)
|
project_id
|
optioneel | Dit is het
id
van het project die je wil gebruiken (dit overschrijft het project dat gevonden is door
de tekstherkenning)
|
duration
|
optioneel | Hiermee kan je de herkende tijd overschrijven (de duration is in secondes) |
Als de registratie goed is opgeslagen krijg je het restultaat te zien:
{
"id": 123979,
"body": "2,5 uur met Rowan aan Timi gewerkt",
"date": "2016-03-28",
"duration": 9000,
"start_time": null,
"end_time": null,
"project": {
"id": 47,
"name": "Timi"
}
}
Het kan echter ook mis gaan, dan krijg je een "errors" object terug:
{
"errors": {
"duration": [
"is geen getal"
]
}
}
PATCH /api/v1/time_entries/[id].json
Naast het aanmaken van een registratie kan je er ook een bewerken, daarvoor kan je dezelfde attributen gebruiken als bij het aanmaken.
http --form PATCH https://timiapp.com/api/v1/time_entries/123968.json \
accept:application/json \
content-type:application/x-www-form-urlencoded \
token=abc123xyz123 \
email=info@example.com \
body='10 uur met Rowan gewerkt'
Het is ook mogelijk om te kijken of er een timer loopt, dat doe je met deze call:
GET /api/v1/time_entries/timer.json
{
"id":1035,
"body":"Mijn timer",
"duration":720,
"start_time":null,
"end_time":null,
"date":"2017-01-26",
"timer_started_at":"2017-01-26T13:33:51.453+01:00"
}
Je krijgt dat dit als resultaat: