Datenexport & Anbieterwechsel
Informationen für Craftro-Firmenkunden (B2B)
Zweck
Craftro-Kunden können einen Export ihrer exportierbaren Daten verlangen, insbesondere im Rahmen eines Anbieterwechsels oder bei Beendigung der Nutzung.
Während des kostenlosen Pilots wird für einen solchen Export-/Switching-Vorgang kein Entgelt erhoben (0 EUR).
Verfahren
- Anforderung jederzeit per E-Mail an info@azizgasim.de.
- Identität und Firmenzuordnung werden geprüft.
- Craftro führt den Export ohne unangemessene Verzögerung durch (reguläre Übergangsphase höchstens 30 Kalendertage).
- Nach Bereitstellung folgt eine Abrufphase von mindestens 30 Kalendertagen.
- Danach erfolgt die Löschung der exportierbaren operativen Kundendaten, soweit keine gesetzliche Pflicht entgegensteht.
Im Pilot gibt es keinen kontinuierlichen API-Sync zu Drittsystemen. Export und Portability API liefern jeweils einen aktuellen ZIP-Snapshot zum Zeitpunkt der Anforderung.
Portabilitätsschnittstelle
Craftro stellt für einen Export-/Switching-Vorgang eine dokumentierte, ausschließlich lesende HTTPS-Schnittstelle bereit. Der Zugriff erfolgt über einen zeitlich begrenzten Portability Token. Die Schnittstelle dient ausschließlich der Datenportabilität — kein Schreibzugriff auf Craftro und keine allgemeine Integrations-/CRUD-API.
Ein Zielanbieter kann damit aktuelle Export-Snapshots anfordern und herunterladen. Jede Anforderung erzeugt einen neuen Snapshot zum Zeitpunkt der Anforderung (kein Live-Sync).
Base URL: https://craftro.de/api/portability
Authentifizierung: Header Authorization: Bearer <portability-token> (vom Operator ausgegeben; Klartext nur einmal sichtbar).
GET /schema
Liefert Exportversion, Format, Encoding, Datenfiles inkl. Felder, ausgeschlossene Kategorien, Interoperabilitätsformate sowie Links auf diese Dokumentation.
Authorization: Bearer <portability-token>
{
"export_version": "1.0",
"format": "…",
"encoding": "UTF-8",
"data_files": [ … ],
"excluded_categories": [ … ],
"interoperability_formats": [ … ],
"documentation": {
"public_url": "https://craftro.de/datenexport",
"base_url": "https://craftro.de/api/portability"
},
"snapshot_note": "…"
}
POST /exports
Erzeugt einen aktuellen Snapshot der zum Token gehörenden Firma (kein company_id im Request).
Authorization: Bearer <portability-token>
{
"id": "<uuid>",
"status": "ready",
"requested_at": "…",
"ready_at": "…",
"created_at": "…",
"expires_at": "…",
"size": 12345,
"checksum_sha256": "…"
}
GET /exports/{export}
Metadaten/Status eines eigenen Exports. Fremde Export-IDs werden nicht gefunden.
GET /exports/{export}/download
Lädt die ZIP-Datei herunter (application/zip, Content-Disposition: attachment, Cache-Control: private, no-store). Nur eigene, noch gültige Exports.
Einzelne erzeugte Portability-Snapshots sind zeitlich begrenzt verfügbar (derzeit 7 Tage ab Erstellung). Solange der Portability-Zugang gültig ist, können während der Abrufphase weitere aktuelle Snapshots erzeugt werden. Eine einzelne ZIP-Datei wird nicht zwingend über die gesamte Abrufphase von 30 Tagen gespeichert.
Format
ZIP archive containing UTF-8 JSON files and original customer files.
Dateiname z. B. craftro-export-<firma>-<datum>.zip.
Encoding: UTF-8. Zeitangaben als ISO-8601.
ZIP-Struktur
README.txt– Kurzbeschreibung des Exportsdata/company.json– Stammdaten und Konfiguration des Unternehmens (Objekt).data/users.json– Benutzer/Mitarbeiter des Unternehmens (Array). Ohne Passworthashes und Tokens.data/clients.json– Kunden und zugehörige Kontaktdaten (Array).data/work_orders.json– Aufträge inkl. Terminen, Status und Einsatzadressen (Array).data/assignments.json– Mitarbeiterzuweisungen zu Aufträgen (Array).data/attachments.json– Metadaten zu Fotos/PDFs/Dokumenten (Array). Dateiinhalte liegen unter files/.files/attachments/<id>/<dateiname>– in Craftro gespeicherte Auftragsdateienfiles/profile-pictures/<user-id>/<dateiname>– Profilbilder der Benutzer, soweit vorhanden
data/company.json
Stammdaten und Konfiguration des Unternehmens (Objekt).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Interne Firmen-ID |
name |
string | Firmenname |
slug |
string|null | Technischer Slug |
contact_name |
string|null | Ansprechpartner |
email |
string|null | Firmen-E-Mail |
phone |
string|null | Telefon |
street |
string|null | Straße |
zip |
string|null | PLZ |
city |
string|null | Ort |
country |
string|null | Land |
website |
string|null | Website |
status |
string | active|inactive |
settings |
object|array | Company-Settings |
pilot_started_at |
string|null | ISO-8601 Pilotstart |
pilot_ends_at |
string|null | ISO-8601 Pilotende |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/users.json
Benutzer/Mitarbeiter des Unternehmens (Array). Ohne Passworthashes und Tokens.
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Benutzer-ID |
name |
string | Name |
email |
string|null | |
role |
string | admin|dispatcher|worker |
status |
string | active|inactive |
mobile_access_enabled |
boolean | Mobile-Zugang aktiv |
last_login_at |
string|null | ISO-8601 |
password_set_by_user |
boolean | Passwort vom Benutzer gesetzt |
profile_picture_export_path |
string|null | Relativer ZIP-Pfad zum Profilbild unter files/profile-pictures/, falls vorhanden |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/clients.json
Kunden und zugehörige Kontaktdaten (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Kunden-ID |
client_number |
string|null | Kundennummer |
name |
string | Kundenname |
type |
string|null | Kundentyp |
contact_name |
string|null | Ansprechpartner |
email |
string|null | |
phone |
string|null | Telefon |
street |
string|null | Straße / Einsatzadresse |
zip |
string|null | PLZ |
city |
string|null | Ort |
country |
string|null | Land |
notes |
string|null | Notizen |
payment_terms |
string|null | Zahlungsbedingungen |
status |
string|null | Status |
created_by |
integer|null | Benutzer-ID Ersteller |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/work_orders.json
Aufträge inkl. Terminen, Status und Einsatzadressen (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Auftrags-ID |
client_id |
integer|null | Kunden-ID |
work_order_number |
string|null | Auftragsnummer |
title |
string | Titel |
description |
string|null | Beschreibung |
priority |
string|null | Priorität |
status |
string | Status |
scheduled_start |
string|null | ISO-8601 geplant Start |
scheduled_end |
string|null | ISO-8601 geplant Ende |
actual_start |
string|null | ISO-8601 Ist-Start |
actual_end |
string|null | ISO-8601 Ist-Ende |
street |
string|null | Einsatzstraße |
zip |
string|null | PLZ |
city |
string|null | Ort |
country |
string|null | Land |
created_by |
integer|null | Benutzer-ID Ersteller |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/assignments.json
Mitarbeiterzuweisungen zu Aufträgen (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Zuweisungs-ID |
work_order_id |
integer | Auftrags-ID |
user_id |
integer | Benutzer-ID |
assigned_at |
string|null | ISO-8601 |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/attachments.json
Metadaten zu Fotos/PDFs/Dokumenten (Array). Dateiinhalte liegen unter files/.
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Anhang-ID |
work_order_id |
integer | Auftrags-ID |
user_id |
integer|null | Uploader-Benutzer-ID |
kind |
string | photo|document|signature |
filename |
string|null | Anzeigename |
file_size |
integer|null | Größe in KB |
mime_type |
string|null | MIME-Typ |
notes |
string|null | Notizen |
export_path |
string | Pfad der Originaldatei im ZIP |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
Nicht Bestandteil des Kundenexports
- Passworthashes
- Zugriffstokens / Sanctum Tokens
- interne Security-Secrets
- interne Operatordaten
- interne Audit-/Securityinformationen, soweit keine Kundendaten
- Daten anderer Mandanten
Technische Einschränkungen
- Export und Portability API liefern jeweils einen aktuellen ZIP-Snapshot zum Zeitpunkt der Anforderung, kein Live-Sync.
- Während eines gültigen Portability Tokens dürfen mehrere Snapshots nacheinander erzeugt werden.
- Soft-deleted Datensätze werden nicht exportiert, sofern sie in Craftro bereits als gelöscht gelten.
- Fehlende Profilbilder oder Anhangdateien werden übersprungen; der Export bleibt gültig.
- IDs sind Craftro-interne Primärschlüssel und dienen der Nachvollziehbarkeit von Relationen.
Verwendete Interoperabilitätsformate
- ZIP (application/zip)
- JSON (RFC 8259), UTF-8
- ISO-8601 Timestamps
Löschung
Operative Kundendaten werden nach Ende der Abrufphase gelöscht, sofern kein anderer dokumentierter Grund entgegensteht. Vertragsnachweise (z. B. akzeptierte Pilotbedingungen und AVV) werden als Nachweisarchiv getrennt aufbewahrt.