Datenexport & Anbieterwechsel
Informationen für Zweimano-Firmenkunden (B2B)
Zweck
Zweimano-Kunden können einen Export ihrer exportierbaren Daten verlangen, insbesondere im Rahmen eines Anbieterwechsels oder bei Beendigung der Nutzung.
Während der kostenlosen Testphase 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.
- Zweimano 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.
In der Testphase gibt es keinen kontinuierlichen API-Sync zu Drittsystemen. Export und Portability API liefern jeweils einen aktuellen ZIP-Snapshot zum Zeitpunkt der Anforderung.
Portabilitätsschnittstelle
Zweimano 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 Zweimano 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://zweimano.de/api/v1/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://zweimano.de/datenexport",
"base_url": "https://zweimano.de/api/v1/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. zweimano-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/access_changes.json– Audit der Zugangs- und Tarifänderungen (Array).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/work_order_series.json– Wiederkehrende Auftragsserien inkl. RRULE (Array).data/assignments.json– Mitarbeiterzuweisungen zu Aufträgen (Array).data/series_assignments.json– Mitarbeiterzuweisungen zu Auftragsserien (Array).data/attachments.json– Metadaten zu Fotos/PDFs/Dokumenten (Array). Dateiinhalte liegen unter files/.data/checklist_templates.json– Checklisten-Vorlagen (Array).data/checklist_template_items.json– Punkte der Checklisten-Vorlagen (Array).data/work_order_checklist_items.json– Checklistenpunkte an Aufträgen (Array). Ohne Zeitstempel pro Abhaken.data/work_order_series_checklist_items.json– Checklistenpunkte an Auftragsserien (Array).data/work_order_signatures.json– Unterschriften bzw. Ablehnungsgründe beim Auftragsabschluss (Array). Bilder unter files/signatures/.data/work_order_proofs.json– Arbeitsnachweis-PDFs (Array). Dateien unter files/proofs/.files/attachments/<id>/<dateiname>– in Zweimano 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 |
trial_started_at |
string|null | ISO-8601 Start der Testphase |
trial_ends_at |
string|null | ISO-8601 Ende der Testphase |
trial_extended_at |
string|null | ISO-8601 einmalige Verlängerung |
plan |
string|null | klein|team|betrieb|individuell |
billing_cycle |
string|null | monthly|yearly |
subscribed_at |
string|null | ISO-8601 Tarifbeginn |
subscription_ends_at |
string|null | ISO-8601 Kündigungsende |
launch_offer_until |
string|null | Datum Startangebot |
individual_max_persons |
integer|null | Personenlimit bei individuell |
individual_monthly_price |
integer|null | Monatspreis bei individuell |
read_only_until |
string|null | ISO-8601 Lesemodus-Ende |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/access_changes.json
Audit der Zugangs- und Tarifänderungen (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Eintrags-ID |
event |
string | Ereignistyp |
previous_values |
object | Alter Zustand |
new_values |
object | Neuer Zustand |
created_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 |
send_proofs |
boolean | Arbeitsnachweise per E-Mail senden |
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 |
series_id |
integer|null | Serien-ID, falls Teil einer Serie |
occurrence_date |
string|null | Vorkommen-Datum (Y-m-d) |
detached_from_series_at |
string|null | ISO-8601, wann vom Serienplan gelöst |
created_by |
integer|null | Benutzer-ID Ersteller |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/work_order_series.json
Wiederkehrende Auftragsserien inkl. RRULE (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Serien-ID |
client_id |
integer|null | Kunden-ID |
title |
string | Titel |
description |
string|null | Beschreibung |
priority |
string|null | Priorität |
street |
string|null | Einsatzstraße |
zip |
string|null | PLZ |
city |
string|null | Ort |
country |
string|null | Land |
start_time |
string | Uhrzeit (HH:MM:SS) |
duration_minutes |
integer | Dauer in Minuten |
rrule |
string | RFC 5545 RRULE |
starts_on |
string | Startdatum (Y-m-d) |
ends_on |
string|null | Endedatum (Y-m-d) |
paused_at |
string|null | ISO-8601 Pause |
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/series_assignments.json
Mitarbeiterzuweisungen zu Auftragsserien (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Zuweisungs-ID |
work_order_series_id |
integer | Serien-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 |
data/checklist_templates.json
Checklisten-Vorlagen (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Vorlagen-ID |
name |
string | Name |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/checklist_template_items.json
Punkte der Checklisten-Vorlagen (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Punkt-ID |
checklist_template_id |
integer | Vorlagen-ID |
position |
integer | Reihenfolge |
label |
string | Text |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/work_order_checklist_items.json
Checklistenpunkte an Aufträgen (Array). Ohne Zeitstempel pro Abhaken.
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Punkt-ID |
work_order_id |
integer | Auftrags-ID |
position |
integer | Reihenfolge |
label |
string | Text |
is_done |
boolean | Erledigt |
completed_by |
integer|null | Benutzer-ID |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/work_order_series_checklist_items.json
Checklistenpunkte an Auftragsserien (Array).
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Punkt-ID |
work_order_series_id |
integer | Serien-ID |
position |
integer | Reihenfolge |
label |
string | Text |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/work_order_signatures.json
Unterschriften bzw. Ablehnungsgründe beim Auftragsabschluss (Array). Bilder unter files/signatures/.
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Signatur-ID |
work_order_id |
integer | Auftrags-ID |
signer_name |
string|null | Name des Unterzeichners |
signed_at |
string|null | ISO-8601 Zeitpunkt der Unterschrift (intern) |
captured_by |
integer|null | Benutzer-ID des abschließenden Mitarbeiters |
declined_reason |
string|null | customer_absent|customer_refused|null |
export_path |
string|null | Pfad des Unterschriftsbilds im ZIP, falls vorhanden |
created_at |
string|null | ISO-8601 |
updated_at |
string|null | ISO-8601 |
data/work_order_proofs.json
Arbeitsnachweis-PDFs (Array). Dateien unter files/proofs/.
| Feld | Typ | Beschreibung |
|---|---|---|
id |
integer | Nachweis-ID |
public_id |
string | Öffentliche Dokument-ID (ULID), steht auch im PDF |
work_order_id |
integer | Auftrags-ID |
version |
integer | Versionsnummer ab 1 |
sha256 |
string | SHA-256 des PDF |
generated_at |
string|null | ISO-8601 |
sent_to_customer_at |
string|null | ISO-8601 |
sent_to_email |
string|null | Empfängeradresse |
signature_id |
integer|null | Zugehörige Signatur-ID |
export_path |
string | Pfad der PDF-Datei 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 Zweimano bereits als gelöscht gelten.
- Fehlende Profilbilder oder Anhangdateien werden übersprungen; der Export bleibt gültig.
- IDs sind Zweimano-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 AGB und AVV) werden als Nachweisarchiv getrennt aufbewahrt.