Headers
Content-Type: application/json
Accept: application/json
Authorization: Bearer <WEBHOOK_TOKEN>
awork Pfeilomat Middleware API
Integration
Dieser Endpoint nimmt Kunden- oder Projekt-Daten aus FileMaker entgegen, speichert sie lokal und versucht danach direkt die Synchronisation nach awork.
/webhooks/filemaker
Content-Type: application/json
Accept: application/json
Authorization: Bearer <WEBHOOK_TOKEN>
FileMaker sollte operation: "upsert" senden. Dadurch kann derselbe
Datensatz mehrfach übertragen werden, ohne doppelte Projekte zu erzeugen.
{
"entity_type": "project",
"record_id": "WF_2_0_Job_137680",
"operation": "upsert",
"data": {
"filemaker_project_id": "WF_2_0_Job_137680",
"job_number": "HA/EQ/2026/002/000",
"project_name": "new EQ Media Sponsoring",
"filemaker_client_id": "WF_2_0_Ad_4010",
"client_name": "Hassia",
"filemaker_product_id": "PRD_0057",
"product_name": "Elisabethen Quelle",
"kapatool_active": 1,
"client_is_active": 1,
"created_by_email": "paulina.wiehrdt@huth-wenzel.de",
"filemaker_status": "Aktuell"
}
}
{
"entity_type": "customer",
"record_id": "12345",
"operation": "upsert",
"data": {
"filemaker_client_id": "WF_LBS_BY",
"client_name": "LBS Bayern",
"is_active": true
}
}
Inaktive Kunden werden in awork nicht geloescht, sondern mit
Pfeilomat inaktiv markiert. Bei Reaktivierung wird der Tag entfernt.
entity_type muss customer oder project sein.record_id muss identisch mit data.filemaker_project_id sein.operation ist create, update, upsert oder delete.kapatool_active und client_is_active akzeptieren 1, 0, true, false, "true", "false".| FileMaker | awork |
|---|---|
Aktuell |
Noch nicht gestartet |
Fertig |
Abgeschlossen |
Die Middleware setzt den echten awork-Projektstatus per
/projects/{projectId}/changestatus.
processedqueueddisabled201 Created
{
"message": "FileMaker project webhook created local records.",
"webhook_event_id": 1378,
"status": "processed",
"operation": "upsert",
"entity_type": "project",
"record_id": "WF_2_0_Job_137680",
"project_id": 5896,
"created": true,
"awork_sync": {
"status": "processed"
}
}
200 OK
{
"message": "FileMaker project webhook updated local records.",
"webhook_event_id": 1378,
"status": "processed",
"operation": "upsert",
"entity_type": "project",
"record_id": "WF_2_0_Job_137680",
"project_id": 5896,
"created": false,
"awork_sync": {
"status": "processed"
}
}
| Status | Bedeutung |
|---|---|
400 |
Ungültiges JSON, Antwort: Malformed JSON. |
401 |
Fehlender oder falscher Bearer Token. |
422 |
Validierungsfehler, z. B. fehlende Pflichtfelder oder abweichende IDs. |
404 |
Nur bei operation: "update" oder operation: "delete", wenn das Projekt lokal nicht existiert. |
409 |
Nur bei operation: "create", wenn das Projekt lokal bereits existiert. |
503 |
Lokale Datenbank-Persistierung war nicht möglich. |
filemaker_product_id und product_name duerfen leer sein.
Das Projekt wird dann direkt dem Kunden zugeordnet und ohne lokalen Sub-Client gespeichert.
{
"entity_type": "project",
"record_id": "WF_2_0_Job_7802",
"operation": "upsert",
"data": {
"filemaker_project_id": "WF_2_0_Job_7802",
"job_number": "MK/TP/2019/025",
"project_name": "Test RE",
"filemaker_client_id": "WF_2_0_Ad_2108",
"client_name": "Musterkunde",
"filemaker_product_id": null,
"product_name": null,
"kapatool_active": 1,
"client_is_active": 1,
"created_by_email": "alexander.pfeil@huth-wenzel.de",
"filemaker_status": "Aktuell"
}
}
Bei operation: "delete" wird das Projekt nicht physisch geloescht.
Die Middleware setzt es lokal auf Fertig, deaktiviert Kapatool,
schliesst das awork Projekt mit Status Abgeschlossen und setzt zusaetzlich den Tag
Pfeilomat geloescht.
{
"entity_type": "project",
"record_id": "WF_2_0_Job_7802",
"operation": "delete",
"data": {
"filemaker_project_id": "WF_2_0_Job_7802",
"job_number": "MK/TP/2019/025",
"project_name": "Test RE",
"filemaker_client_id": "WF_2_0_Ad_2108",
"client_name": "Musterkunde",
"kapatool_active": 0,
"client_is_active": 1,
"filemaker_status": "Fertig"
}
}
Gebuchte Zeiten aus awork werden nur dann in FileMaker API_Zeitzettel
geschrieben, wenn alle Sicherheitskriterien erfüllt sind.
FILEMAKER_AWORK_BOOKED_HOURS_ENABLED=true
FILEMAKER_AWORK_BOOKED_HOURS_PILOT_ENABLED=true
FILEMAKER_AWORK_BOOKED_HOURS_PILOT_USER_EMAILS=vahidin.talic@huth-wenzel.de
vahidin.talic@huth-wenzel.de haben.personio_id im Middleware-System haben.awork_project_id gemappt sein.Pfeilomat synced haben.Jobnummer haben.API_Zeitzettel| FileMaker Feld | Quelle |
|---|---|
Z_Datum | awork Datum, formatiert als TT.MM.JJJJ |
Z_Datum_Jahr | Jahr aus awork Datum |
Z_Datum_KW | ISO-Kalenderwoche aus awork Datum |
Z_Mitarbeiter_ID | Middleware personio_id |
Z_Mitarbeiter_Vorname | Middleware User Vorname |
Z_Mitarbeiter_Nachname | Middleware User Nachname |
Z_Mitarbeiter_Email | Middleware User E-Mail |
Z_BEZ_Projektnummer | awork Custom Field Jobnummer |
Z_Projektname | FileMaker Projektname aus Projekt-Lookup |
Z_BEZ_Kunde | FileMaker Kunde aus Projekt-Lookup |
Z_Produktname | FileMaker Produkt aus Projekt-Lookup |
Z_Stunden | awork Dauer in Stunden, z. B. 0.25 fuer 15 Minuten |
Wenn User, Tag oder Jobnummer nicht passen, wird kein FileMaker-Zeitzettel geschrieben.
Das Ergebnis steht im Webhook-Event unter filemaker_booked_hours_sync.status.