API Anleitung

Grundlagen

Die LogMyTime API ist eine OData V2 Api, die alternativ auch als RESTful API per HTTP und XML oder JSON erreichbar ist.

Durch die Kompatibilität zu OData V2 Standard, kann sie auf einfache Weise über zahlreiche clientseitige Libraries für .NET, Java, Ruby, PHP, Javascript und viele weitere Programmiersprachen und Umgebungen angesprochen werden.

Für das Endergebnis ist es gleich, ob Sie eine clientseitge Library verwenden, oder lieber direkt mit HTTP-Request arbeiten. aufgrund der Einfachheit empfehlen wir jedoch die Verwendung einer clientseitigen library.

Service URL

Die API ist unter folgenden Adresse erreichbar:

https://api.logmytime.de/V1/Api.svc

Wir empfehlen generell den Zugriff über HTTPS, da nur dieser vor dem Abhören durch Dritte geschützt ist. Sollte dies aus technischen Gründen nicht möglich sein, ist jedoch auch der Zugriff über HTTP möglich.

Unterschiedliche Zugriffsmethoden

Es gibt mehrere Möglichkeiten, auf die API zuzugreifen:

Authentifizierung

Sie können mit der API nur die Lese- und Schreiboperationen ausführen, die dem jeweiligen Benutzeraccount auch auf der Webseite gestattet wären. Die Zugriffsrechte sind hier aufgeschlüsselt.

Um die API zu benutzen, muss der jeweilige Mitarbeiter in seinem LogMyTime Konto unter "Verwaltung" -> "Eigenes Profil" einen API-Schlüssel generieren. Dieser dient als Login und Passwort für den Zugriff auf die API.

Der API-Schlüssel muss bei jedem Zugriff auf die API übermittelt werden. Hierzu haben Sie drei verschiedene Optionen:

Per GET-Parameter (nur bei Lesezugriff):

Hierzu fügen Sie Ihren API-Schlüssel als GET-Parameter in der URI ein.
Beispiel: mit curl die erfassten Zeiten auflisten, mit GET-Authentifizierung

curl https://api.logmytime.de/V1/Api.svc/TimeEntries?ApiKey={apischluessel}

Per Basic-Authentication

Basic-Authentication ist wird von vielen verschiedenen HTTP clients unterstützt. Entscheidend ist hier nur das Passwort, der Mitarbeitername spielt keine Rolle
Beispiel: mit curl die erfassten Zeiten auflisten (mit Basic-Authentication)

curl -u x:{apischluessel} https://api.logmytime.de/V1/Api.svc/TimeEntries

Per HTTP-Header:

Dazu muss der HTTP Request Header die Zeile X-LogMyTimeApiKey: {apischluessel} enthalten.
Beispiel: mit curl die erfassten Zeiten auflisten (mit HTTP Header Authentifizierung)

curl -H 'X-LogMyTimeApiKey: {apischluessel}' https://api.logmytime.de/V1/Api.svc/TimeEntries

Endeutige Client-ID

Falls Sie einen Client für LogMyTime entwickeln (z.B. ein nativer Client für Windows Phone 7), sollte sich dieser gegenüber der API ausweisen. Sie helfen uns damit, mögliche Probleme bei der Kommunikation zwischen Clients und der LogMyTime API zu erkennen.

Bitte übermitteln Sie dazu im HTTP Request Header den Parameter "User-Agent" oder "X-UserAgent" und eine frei von Ihnen erfundene ID sowie der Versionsnummer Ihres Clients.

Beispiel: Ausweisen des Client-Typs mit UserAgent-Parameter:

Request Header:
            GET /V1/Api.svc/Projects
            User-Agent: Adrians LogMyTimeClient 1.0
            ...weitere Parameter...