Jobstaff API
Ja, wir haben eine API für Entwickler. Genauer: einen RESTful Webservice auf Basis von JSON. Bitte benutzen Sie GET-, POST- oder HEAD-Requests. Wie Sie diese API genau nutzen können, wollen wir Ihnen nicht verheimlichen. Los gehts.
Allgemeines
URL Struktur
Alle Jobstaff Anfragen starten mit api.jobstaff.de. Das nächste Segment des URL-Pfads bezeichnet die aufzurufende Methode unter Angabe des Parameters action gefolgt von Übergabe-Parametern wie z.B. dem API Key.
API Key
Ihren API-Key erhalten Sie über den einmaligen Aufruf der Methode login (siehe unten). Bitte übergeben Sie den key mit jeder Anfrage an unsere API wie im unten stehenden Beispiel.
App ID
Die App ID (Application Identifier) identifiziert Ihre Anwendung. Sie können beliebig viele App IDs für Anwendungen erzeugen. In den Einstellungen Ihres Jobstaff Accounts finden Sie die entsprechende Verwaltung. Die App ID wird mit dem Parameter appid übergeben und muss bei jedem API-Request angegeben werden.
UUID
Eine UUID (Universally Unique Identifier) identifiziert ein Objekt in der Jobstaff-Datenbank. Dies können z.B. folgende Objekte sein:
» Projekt
» Aufgabe
» Mitarbeiter
» Kunde
» etc.
Alle Jobstaff Anfragen starten mit api.jobstaff.de. Das nächste Segment des URL-Pfads bezeichnet die aufzurufende Methode unter Angabe des Parameters action gefolgt von Übergabe-Parametern wie z.B. dem API Key.
API Key
Ihren API-Key erhalten Sie über den einmaligen Aufruf der Methode login (siehe unten). Bitte übergeben Sie den key mit jeder Anfrage an unsere API wie im unten stehenden Beispiel.
App ID
Die App ID (Application Identifier) identifiziert Ihre Anwendung. Sie können beliebig viele App IDs für Anwendungen erzeugen. In den Einstellungen Ihres Jobstaff Accounts finden Sie die entsprechende Verwaltung. Die App ID wird mit dem Parameter appid übergeben und muss bei jedem API-Request angegeben werden.
UUID
Eine UUID (Universally Unique Identifier) identifiziert ein Objekt in der Jobstaff-Datenbank. Dies können z.B. folgende Objekte sein:
» Projekt
» Aufgabe
» Mitarbeiter
» Kunde
» etc.
Beispiel
http://api.jobstaff.de/v1/?action=saveTheWorld&appid=xxxxxxxx&key=abcabcabcabc123123123123
Lernende Dokumentation
Um Ihnen die Arbeit mit der Jobstaff API zu erleichtern, geben Sie nachfolgend Ihre App ID und einen API Key ein. Alle folgenden API-Requests in dieser Dokumentation passen sich damit automatisch an Ihre Umgebung an.
| App ID: | API Key: |
Methoden
login
| Parameter | Info |
|---|---|
| appid | |
| Klartext | |
| password | sha1 encrypted |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=login&mail=mail%40example.com&password=xxxxx
Beispiel Antwort:
{
"result": 1,
"key": "xxxxx",
"uuid": "ap9asfnA8asdDFHnfasd0fadsf",
"username": "Max Mustermann",
"usertype": 2
}
register
| Parameter | Info |
|---|---|
| appid | |
| name | |
| password | sha1 encrypted |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=register&name=Max Mustermann&mail=max@example.com&password=1211212121212
Beispiel Antwort:
{
"result": 1,
"key": "xxxxx",
"uuid": "ap9asfnA8asdDFHnfasd0fadsf",
"username": "Max Mustermann",
"usertype": 2
}
setUserPassword
| Parameter | Info |
|---|---|
| key | |
| appid | |
| oldPassword | sha1 encrypted |
| newPassword | sha1 encrypted |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=setUserPassword&oldPassword=aaaaa&newPassword=bbbbb&key=xxxxxx
Beispiel Antwort:
{
"result": 1
}
setUserData
| Parameter | Info |
|---|---|
| key | |
| appid | |
| identifier | gültige Werte: "username", "usertel" |
| value |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=setUserData&identifier=username&value=Max Mustermann&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
getUserTypeByUserID
| Parameter | Info |
|---|---|
| key | |
| appid |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getUserTypeByUserID&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"userType": 3,
"userTypeValue": "Admin"
}
getTimer
| Parameter | Info |
|---|---|
| key | |
| appid |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getTimer&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"timerstatus": "1",
"jobtaskname": "Beispielaufgabe",
"jobtasklink": "xxxxx",
"timerstartpoint": "2013-05-02 16:34:22",
"timervalue": "0:48",
"joblink": "yyyyy",
"jobname": "Beispielprojekt"
}
getJobs
| Parameter | Info |
|---|---|
| key | |
| appid |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getJobs&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"rowCount": 16,
"data":[
{
"joblink": "xxxxx",
"jobname": "Ein Projekt",
"jobdescription": "Eine Beschreibung, die ganz lang ist.",
"jobshortdescription": "Eine Beschreibung",
"jobarchive": "0",
"subscribed": "1",
"maxrequired": "9",
"permission": "0",
"jobcustomerid": "4",
"customername": "Beispielkunde",
"jobcreationdate": "2013-01-01 10:00:00"
},
{
...
}
]
}
getJob
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Projekt UUID |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getJob&link=xxxxx&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"data": {
"jobname": "Ein Projekt",
"jobdescription": "Eine Beschreibung",
"jobcustomerid": "0",
"jobcustomername": "Mustermann GmbH",
"jobcreationdate": "2013-01-01 10:00:00",
"jobhourrate": "36.00",
"jobneedsauth": "0",
"jobarchive": "0",
"subscribed": "1",
"maxrequired": "9"
}
}
addJob
| Parameter | Info |
|---|---|
| key | |
| appid | |
| name | Projektname |
| desc | Beschreibung |
| customer | Kunden ID, Integer > 0 oder 0 = internes Projekt |
| hourrate | (optional) Stundenlohn für das Projekt. Float: 14.00 |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=addJob&name=Projektname&desc=Projektbeschreibung&customer=23442&hourrate=36.00&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"link": "xxxxx"
}
editJob
| Parameter | Info |
|---|---|
| key | |
| appid | |
| name | Projektname |
| desc | Beschreibung |
| link | Projekt UUID |
| customer | Kunden ID, Integer > 0 oder 0 = internes Projekt |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=editJob&name=Projektname&desc=Projektbeschreibung&customer=23442&link=xxxxx&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
deleteJob
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Projekt UUID |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=deleteJob&link=xxxxx&key=
Beispiel Antwort:
{
"result": 1
}
getTasks
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Projekt UUID |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getTasks&link=xxxxx&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"job": {
"jobname": "Ein Projekt",
"jobdescription": "Eine Beschreibung",
"jobcustomerid": "0",
"viewpermission": "1",
"customername": "Beispielkunde"
},
"taskCount": 3,
"tasks": [
{
"jobuseruuid": "kajhakshdaksd7865876fiG",
"jobtasklink": "xxxxx",
"jobtaskname": "Konzeption",
"jobtaskdescription": "Konzeption",
"jobtaskshortdescription": "Konzeption",
"jobtaskrequired": "3",
"jobtaskdatefrom": "2013-05-21 10:00:00",
"jobtaskdateto": "2013-05-24 10:00:00",
"jobtasksuccess": "0",
"jobtaskallowsubscription": "1",
"subscribers": "1",
"mesubscribed": "1",
"permission": "1"
},
{
...
}
]
}
getTask
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Aufgabe UUID |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getTask&link=xxxxx&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"data": {
"jobtaskname": "Konzeption",
"jobtaskdescription": "Konzeption",
"jobtasklink": "xxxxx",
"jobtaskrequired": "3",
"jobtaskdatefrom": "2013-05-21 10:00:00",
"jobtaskdateto": "2013-05-24 10:00:00",
"jobtaskbillable": "1",
"jobtaskhourrate": "36.00",
"jobtasksuccess": "0",
"jobtaskallowsubscription": "1",
"joblink": "xxxxx",
"jobname": "Ein Projekt",
"jobdescription": "",
"jobcreationdate": "2013-03-26 20:00:00",
"jobhourrate": "12.00",
"jobneedsauth": "0",
"jobarchive": "0",
"viewpermission": "1",
"permission": "1",
"timeractive": "1",
"timervalue": "0:58",
"subscribers": "1",
"mesubscribed": "1"
},
"countSubscribers": 2,
"subscribers": [
{
"useruuid": "jhlkjhasd7HGKH6r67kh",
"username": "Demoaccount"
},
{
...
}
]
}
addTask
| Parameter | Info |
|---|---|
| key | |
| appid | |
| name | Aufgaben-Name |
| desc | Beschreibung |
| required | Benötigte Mitarbeiter |
| link | Projekt UUID |
| from | DateTime: "2000-01-01 00:00:01" |
| to | DateTime: "2000-01-01 00:00:01" |
| hourrate | (optional) Stundenlohn für die Aufgabe. Float: 14.00 |
| billable | (optional) Abrechenbarkeit der Aufgabe. Ja = 1, Nein = 2 |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=addTask&name=Aufgabenname&desc=Aufgabenbeschreibung&required=4&link=xxxxx&from=2013-01-01 10:00:00&to=2013-12-31 14:00:00&hourrate=38.00&billable=1&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"link": "tn6y8VPUuUNbi6kfSxS0QlT2bMqkcuQ7md7"
}
editTask
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Aufgabe UUID |
| name | Aufgaben-Name |
| desc | Beschreibung |
| required | Benötigte Mitarbeiter |
| from | DateTime: "2000-01-01 00:00:01" |
| to | DateTime: "2000-01-01 00:00:01" |
| hourrate | (optional) Stundenlohn für Aufgabe. Float: 14.00 |
| billable | (optional) Abrechenbarkeit der Aufgabe. Ja = 1, Nein = 2 |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=editTask&name=Aufgabenname&desc=Aufgabenbeschreibung&required=4&link=xxxxx&from=2013-01-01 10:00:00&to=2013-12-31 10:00:00&hourrate=38.00&billable=2&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
deleteTask
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Aufgabe UUID |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=deleteTask&link=xxxxx&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
subscribeTask
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Aufgabe UUID |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=subscribeTask&link=xxxxx&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
unsubscribeTask
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Aufgabe UUID |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=unsubscribeTask&link=xxxx&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
getJobParticipations
| Parameter | Info |
|---|---|
| key | |
| appid |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getJobParticipations&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"dataCount": 4,
"data": [
{
"jobname": "Ein Projekt",
"joblink": "xxxxx",
"jobtaskname": "Eine Aufgabe",
"jobtasklink": "xxxxx",
"jobtaskdatefrom": "2013-01-01 10:00:00",
"jobtaskdateto": "2013-12-31 10:00:00",
"dateinfo": null
},
{
...
}
]
}
getStaff
| Parameter | Info |
|---|---|
| key | |
| appid |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getStaff&key=xxxxx
Beispiel Antwort:
{
"result":1,
"rowCount":4,
"data":[
{
"username":"Bernd Mueller",
"useremail":"info@jobstaff.de",
"useraccount":"r15N_WlH78gasdXo68e8tdjV50GyB",
"usertype":"2",
"userlogo":"05a677964e9e227af95183c4bfe109c5.png",
"userhourrate":"12.00",
"usertel":"017112345678",
"usertypename":"Mitarbeiter",
"userOpenMinutes":"42.76"
},
{
...
}
]
}
getUser
| Parameter | Info |
|---|---|
| key | |
| appid |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getUser&key=xxxxx
Beispiel Antwort:
{
"result":1,
"data":{
"username":"Demoaccount",
"useremail":"demo",
"usertel":"0172987612345",
"useraccount":"m2z0tasdfsdfasdfascZG3uSkEzDz3u7X",
"userbelongsto":"m2z0tasdfsdfasdfascZG3uSkEzDz3u7X",
"userpremium":"1",
"useractive":"1",
"usertype":"3",
"userlogo":"05a677335663433c4bfe109c5.png",
"userhourrate":"60.00"
}
}
addStaff
| Parameter | Info |
|---|---|
| key | |
| appid | |
| name | Mitarbeiter-Name |
| E-Mail Adresse | |
| phone | Telefonnummer |
| usertype | Integer > 0 |
| hourrate | (optional) Stundenlohn für Mitarbeiter. Float: 14.00 |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=addStaff&name=Max Mustermann&mail=max@example.com&phone=1234567890&usertype=2&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"link": "xxxxx"
}
inviteStaff
| Parameter | Info |
|---|---|
| key | |
| appid | |
| link | Aufgabe UUID |
| userAccounts | |
| mode | Gibt an, ob ein Mitarbeiter eingeladen oder zugewiesen werden soll. 1 = Einladen, 2 = Zuweisen |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=inviteStaff&link=xxxxx&userAccounts=[aaaaa,bbbbb]&mode=1&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
getTimes
Gibt alle Zeiteinträge des Benutzer nach Datum sortiert und gruppiert zurück.
Beispiel Anfrage:
Beispiel Antwort:
| Parameter | Info |
|---|---|
| key | |
| appid | |
| from | DateTime: "2000-01-01 00:00:01" |
| to | DateTime: "2000-01-01 00:00:01" |
| mode | (optional) bei "grouped" werden alle Zeiten pro Tag gruppiert. Im Modus "plain" wird jede Zeit einzelnd zurückgegeben. Default ist "grouped" |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getTimes&from=2013-01-01&to=2013-12-31&mode=grouped&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"rowCount": 43,
"hoursAmount": 537.41,
"data": [
{
"hourCount": 2,
"date": "2013-05-09",
"weekday": 4,
"hourData": [
{
"hourstatusvalue": "nicht erstellt",
"hourstatuscolor": "FF7A7A",
"hoursfrom": "2013-05-09 13:58:05",
"hoursto": "2013-05-09 14:08:06",
"hourstimeractive": "0",
"hoursnotice": "",
"hoursamount": "0.17",
"joblink": "xxxxx",
"jobname": "Ein Projekt",
"jobdescription": "Beschreibung des Projekts",
"jobcreationdate": "2013-01-01 10:00:00",
"jobhourrate": "40.00",
"jobneedsauth": "0",
"jobarchive": "0",
"jobtaskname": "Eine Aufgabe",
"jobtaskdescription": "Beschreibung der Aufgabe",
"jobtasklink": "xxxxx",
"jobtaskrequired": "1",
"jobtaskdatefrom": "2013-03-31 10:00:00",
"jobtaskdateto": "2013-04-30 10:00:00",
"jobtaskbillable": "0",
"jobtaskhourrate": "32.00",
"jobtasksuccess": "0",
"jobtaskallowsubscription": "1"
},
{
...
}
]
},
{
...
}
]
}
deleteTime
| Parameter | Info |
|---|---|
| key | |
| appid | |
| id | Integer > 0 |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=deleteTime&id=123123&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
startTimer
| Parameter | Info |
|---|---|
| key | |
| appid | |
| joblink | Projekt UUID |
| tasklink | Aufgabe UUID |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=startTimer&joblink=xxxxx&tasklink=yyyyy&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"timerstart": 1,
"timerstartpoint": "2013-05-02 12:44:12"
}
stopTimer
| Parameter | Info |
|---|---|
| key | |
| appid | |
| save | Zeit speichern oder verwerfen: 1 || 0 |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=stopTimer&save=1&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"data": {
"hoursid": "8963",
"joblink": "xxxxx",
"jobname": "Ein Projekt",
"jobdescription": "Die Beschreibung des Projekts. ",
"jobtaskname": "Eine Aufgabe",
"jobtaskdescription": "Die Beschreibung der Aufgabe",
"jobtasklink": "yyyyy",
"hoursamount": "3.41"
}
}
getCustomer
| Parameter | Info |
|---|---|
| key | |
| appid |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getCustomer&key=xxxxx
Beispiel Antwort:
{
"result": 1,
"rowCount": 4,
"data": [
{
"customerid": 0,
"customername": "internes Projekt"
},
{
"customerlink": "iG4XFkTsdsd7987EphZComnaQ2wiwfAs",
"customername": "Demokunde",
"customernumber": "10554",
"customeraddress1": "Demostraße 13",
"customeraddress2": "",
"customercontact": "Max Mustermann",
"customerzip": "10709",
"customercity": "Berlin",
"customercountry": "1",
"customertel": "01234456789",
"customertaxnumber": "",
"customerhourrate": "40.00",
"customeremail": "info@example.com"
},
{
...
}
]
}
addTime
| Parameter | Info |
|---|---|
| key | |
| appid | |
| joblink | Projekt UUID |
| tasklink | Aufgabe UUID |
| date | "2013-12-31" |
| hours | "00:01" |
| notice | (optional) Notiz zur Arbeitszeit |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=addTime&joblink=xxxxx&tasklink=yyyyy&date=2013-12-31&hours=01:30&key=xxxxx
Beispiel Antwort:
{
"result": 7343
}
updateHourNotice
| Parameter | Info |
|---|---|
| key | |
| appid | |
| hourID | |
| notice | Notiz zur Arbeitszeit |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=updateHourNotice&hourID=123¬ice=Testnotiz&key=xxxxx
Beispiel Antwort:
{
"result": 1
}
getPremiumUserTypes
| Parameter | Info |
|---|---|
| key | |
| appid |
Beispiel Anfrage:
http://api.jobstaff.de/v1/?appid=xxxxx&action=getPremiumUserTypes&key=
Beispiel Antwort:
{
"result":1,
"rowCount":2,
"data":[
{
"usertypeid":"2",
"usertypename":"Mitarbeiter",
"usertypepremium":"1"
},
{
...
}
]
}

