ProSonata API
Folgende HTTP-Methoden stehen für Projekte zur Verfügung:
Zugriff ab Benutzergruppe Zeiterfasser 2.
Lesender Zugriff auf »meine Projekte« für Benutzergruppen bis Zeiterfasser 1.
GET /api/v1/projects
Antwort:
{
"meta": {
"status": 200,
"perPage": 100,
"page": 1,
"totalCount": 64,
"requestUserID": 1,
"requestUsername": "Admin1",
"usergroupName": "Administrator",
"apiLimitRemaining": 498,
"apiLimitReset": 883
},
"data": [
{
"projectID": 1,
"projectNo": "19-12-001",
"projectName": "Kundenmailing",
"customerID": 12,
"customerName": "Versandmode Becker",
"contactID": 53,
"firstName": "Christiane",
"lastName": "Maier",
"projectDate": "2019-01-18",
...
},
...
]
}
Über Parameter kann gefiltert werden:
GET /api/v1/projects?projectName=Testprojekt
| Parameter | Beschreibung |
|---|---|
| projectNo | Projektnummer |
| projectName | Bezeichnung des Projekts |
| customerID | ID des Kunden (Firma/Gruppe) |
| customerName | Bezeichnung des Kunden (Firma/Gruppe) |
| contactID | ID des Kunden Ansprechpartners |
| lastName | Nachname des Kunden Ansprechpartners |
| userID | zugeordnete Projekte des Benutzers mit der ID, Sonderwert: String »myself« für Projekte des anfragenden Benutzeraccounts |
| projectStatus | Status des Projekts: 0 = offen 1 = in Abrechnung 2 = abgeschlossen 3 = abgebrochen 4 = bereit zur Abrechnung |
| financeStatus | Faktura-Status des Projekts: 0 = kein Angebot/Rechnung 1 = Angebot 2 = Rechnung 3 = 1. Mahnung 4 = 2. Mahnung 5 = 3. Mahnung |
| activeStatus | Aktiv-Status des Projekts (offenes Projekt »ruht«): 0 = inaktiv 1 = aktiv |
| projectDate | Datum des Projekts durch Angabe von > oder < vor dem Datum kann eine Suche ab dem bzw. bis zum Datum erfolgen |
| projectDateEnd | Enddatum des Projekts durch Angabe von > oder < vor dem Datum kann eine Suche ab dem bzw. bis zum Datum erfolgen |
| projectQuickInfo | Kurzinfo zum Projekt |
| projectTags | Tags des Projekts |
| internalDepartment | interne Abteilung (0 bis 9) |
| recurringProject | wiederkehrendes Projekt: 0 = nicht wiederkehrend 1 = monatlich 2 = zweimonatlich 3 = quartalsweise 4 = halbjährlich 5 = jährlich 6 = zweijährlich |
| userResponsibleID | ID des verantwortlichen Benutzers |
Nach folgenden Parametern kann sortiert werden (Sortierrichtung ggf. mit ASC bzw. DESC ergänzen):
projectID, projectName, customerID, customerName, contactID, lastName, projectDate, projectDateEnd, projectStatus, timeNeeded
GET /api/v1/projects/{id}
Antwort:
{
"meta": {
"status": 200,
"requestUserID": 1,
"requestUsername": "Admin1",
"usergroupName": "Administrator",
"apiLimitRemaining": 491,
"apiLimitReset": 493
},
"data": {
"projectID": 45,
"projectNo": "19-11-001",
"projectName": "Frühstücks-Flyer",
"customerID": 11,
"customerName": "Bäckerei Back",
"contactID": 50,
"firstName": "Hans",
"lastName": "Back",
"projectDate": "2019-01-13",
"projectDateEnd": null,
"recurringProject": 0,
"createdByUserID": 4,
"userResponsibleID": null,
"projectStatus": 1,
"financeStatus": 3,
"activeStatus": 1,
"projectInfo": "",
"projectQuickInfo": "",
"projectTags": "",
"projectLinks": [
{
"name": "Testlink Website",
"url": "https://www.baeckerei-back-test.de"
},
{
"name": "ProSonata",
"url": "https://www.prosonata.de"
}
],
"timePlanned": 20,
"timeNeeded": 15.25,
"projectCostRate": null,
"internalDepartment": 0,
"projectGroupID": null,
"isProjectTemplate": 0,
"usersAssigned": [
{
"userID": 2,
"username": "Designer2",
"userFirstName": "",
"userLastName": ""
},
{
"userID": 3,
"username": "Admin2",
"userFirstName": "Max",
"userLastName": "Mustermann"
}
]
}
}
POST /api/v1/projects
Die Projektnummer (projectNo) wird beim Anlegen automatisch generiert!
Notwendige und mögliche Parameter im Body:
| Parameter | Beschreibung | Typ | Default-Wert | Pflichtfeld |
|---|---|---|---|---|
| projectName | Bezeichnung des Projekts | String | ja | |
| customerID | ID des Kunden (Firma/Gruppe) | Int | ja | |
| contactID | ID des Kunden Ansprechpartners | Int | ja | |
| activeStatus | Aktiv-Status des Projekts: 0 = inaktiv 1 = aktiv |
Int | 1 | |
| projectDate | Datum Projektstart | Date | aktueller Tag | |
| projectDateEnd | Datum Projektende | Date | null | |
| recurringProject | wiederkehrendes Projekt: 0 = nicht wiederkehrend 1 = monatlich 2 = zweimonatlich 3 = quartalsweise 4 = halbjährlich 5 = jährlich 6 = zweijährlich |
Int | 0 | |
| userResponsibleID | ID des verantwortlichen Benutzers | Int | null | |
| projectQuickInfo | Kurzinfo zum Projekt | String | ||
| projectInfo | erweiterte Infos zum Projekt | String | ||
| projectTags | Tags (kommasepariert) | String | ||
| projectLinks | bis zu 5 Links pro Projekt Links werden als Arrays übergeben: name: Bezeichnung des Links url: URL des Links (inkl. https) |
Array | [] leeres Array |
|
| timePlanned | geplante Zeit (in Std.) für das Projekt | Dec | 0.00 | |
| projectCostRate | Stundensatz des Projekts | Dec | null | |
| internalDepartment | interne Abteilung (0 bis 9) | Int | 0 | |
| projectGroupID | ID der zugeordneten Projektgruppe | Int | null | |
| isProjectTemplate | Projekt als Vorlage markieren | Int | 0 | |
| usersAssigned | zugeordnete Benutzer speichern (ein Array der userID(s) kann übergeben werden) |
Array | [] leeres Array |
Angabe von Dezimalwerten mit Punkt als Trennzeichen.
Beispiel:
{
"projectName": "Muster Projekt",
"customerID": 10,
"contactID": 49,
"projectDateEnd": "25.06.2019",
"userResponsibleID": 2,
"projectInfo": "Hier stehen erweiterte Infos zum Projekt",
"projectQuickInfo": "eine Kurzinfo zum Projekt",
"projectLinks": [
{
"name": "ProSonata",
"url": "https://www.prosonata.de"
}
]
"timePlanned": 20,
"projectCostRate": 80.00,
"internalDepartment": 2,
"usersAssigned": [
{
"userID": 2
},
{
"userID": 3
}
]
}
PUT /api/v1/projects/{id}
Es müssen nicht alle Parameter für eine Bearbeitung übergeben werden.
Ergänzend zum Erstellen der Ressource stehen weitere Parameter zur Verfügung:
| Parameter | Beschreibung | Typ |
|---|---|---|
| projectNo | Projektnummer | String |
| projectStatus | Status des Projekts: 0 = offen 1 = in Abrechnung 2 = abgeschlossen 3 = abgebrochen 4 = bereit zur Abrechnung |
Int |
| financeStatus | Faktura-Status des Projekts: 0 = kein Angebot/Rechnung 1 = Angebot 2 = Rechnung 3 = 1. Mahnung 4 = 2. Mahnung 5 = 3. Mahnung |
Int |