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

  1. Anforderung jederzeit per E-Mail an info@azizgasim.de.
  2. Identität und Firmenzuordnung werden geprüft.
  3. Craftro führt den Export ohne unangemessene Verzögerung durch (reguläre Übergangsphase höchstens 30 Kalendertage).
  4. Nach Bereitstellung folgt eine Abrufphase von mindestens 30 Kalendertagen.
  5. 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 Exports
  • data/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 Auftragsdateien
  • files/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 E-Mail
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 E-Mail
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.