Fotobox-Anbindung
Proofing Gallery stellt eine authentifizierte Schnittstelle für Galerie-Erstellung und JPEG-Uploads bereit. Die vorhandene Fotobox-Software wird dabei nicht verändert. Dieses Dokument beschreibt ihre künftigen Kommunikationswege. Das OpenAPI-Dokument und die englische Referenz mit curl-Beispielen enthalten den vollständigen Vertrag.
Galerie einfach vorbereiten
Unter Neues Projekt → Fotobox Veranstaltungstitel, beschreibbaren Zielordner und Design wählen. Unter den Zugangseinstellungen lassen sich Galerie-Passwort und Ablaufdatum setzen; Nextcloud-Vorgaben gelten weiterhin. Erstellen und veröffentlichen erstellt den neuen Ordner und eine sofort erreichbare, zunächst leere Galerie. Danach Galerie-Link sowie Verbindungskonfiguration kopieren oder als JSON herunterladen. Konto- und Galerie-Passwörter werden nicht exportiert.
Die Galerie verwendet eine gemeinsame Standard-Auslieferung: Alle berechtigten Gäste sehen dieselben Fotos, neue Fotos stehen zuerst, einzelne Downloads sind verfügbar, soweit erlaubt. Gast-Uploads und Zusammenarbeit sind ausgeschaltet. Das vorhandene Event-Delivery-System mit privaten Empfängeralben wird hierfür nicht verwendet. Voreinstellungen liefern Standard-Zielordner und Design; gespeicherte Designs übertragen die Darstellung.
Ablauf auf Kiosk-Seite
- Nextcloud-Adresse, Konto und App-Passwort separat konfigurieren. HTTPS verwenden. Das Konto benötigt Veröffentlichungsrechte und muss Eigentümer der Galerie sein.
GET /ocs/v2.php/apps/proofing_gallery/api/v1/kiosk/setup?format=jsonliefert Standardordner, Design, Fähigkeiten, Freigabevorgaben und Upload-Limits.- Eine dauerhafte
eventIdlokal speichern. MitPOST /ocs/v2.php/apps/proofing_gallery/api/v1/kiosk/galleries?format=jsondie Galerie erstellen. Pflichtfelder:eventIdundtitle. Optional:parentFolderId,designPresetId,password,expiresAt. - Die Antwort unter
ocs.dataspeichern:gallery.id,galleryUrl,eventId,schemaVersionunduploadmit URL-Vorlage und Limits. - Für jedes Foto vor dem Upload eine UUID
photoIdzusammen mit den unveränderten JPEG-Bytes dauerhaft speichern. Inupload.urlTemplateden PlatzhalterPHOTO_IDdurch diese UUID ersetzen. - Per
PUTmitContent-Type: image/jpegdie rohen JPEG-Bytes übertragen. Keine Multipart-Daten. Jeder API-Aufruf nutzt HTTP Basic mit Konto/App-Passwort undOCS-APIRequest: true. - Erst nach HTTP 200/201 die Bestätigung speichern und den QR-Code aus
ocs.data.photoUrlerzeugen. Die Antwort enthält außerdemphotoId,fileId,status: storedundreplayed.
Beispiel für photoUrl: https://cloud.example.test/s/SHARE_TOKEN?photo=12345. Die Zahl ist die Nextcloud-Datei-ID. Der Link öffnet das Foto in der Galerie, nicht direkt die JPEG-Datei. Den zurückgegebenen Link unverändert verwenden. Ein gesetztes Galerie-Passwort wird weiterhin abgefragt und steht nicht im Link. Der QR-Code begrenzt den Zugang nicht auf dieses eine Foto.
Parameter und Wiederholungen
eventId ist pro Konto eindeutig: 1–128 Zeichen aus Buchstaben, Ziffern, Punkt, Unterstrich, Doppelpunkt und Bindestrich, mit alphanumerischem Anfang. Der Titel umfasst nach Entfernen äußerer Leerzeichen 1–255 Zeichen. Fehlende oder null-Werte für Ordner/Design verwenden die persönlichen Vorgaben; designPresetId: 0 verwendet das Studio-Design, positive IDs ein eigenes gespeichertes Design. Ein beschreibbarer Zielordner ist erforderlich. Das Ablaufdatum verwendet ein zukünftiges YYYY-MM-DD; leer bedeutet Nextcloud-Standard. Nextcloud kann Passwort oder maximale Gültigkeit erzwingen.
Dieselbe eventId mit denselben ursprünglichen Parametern setzt eine unterbrochene Erstellung fort oder gibt dieselbe Galerie zurück. Die zuerst aufgelösten Vorgaben bleiben erhalten, auch wenn Benutzereinstellungen später geändert werden. Abweichende Parameter führen zu HTTP 409. Ursprüngliche Anfrage einschließlich optionaler Werte und Passwort für Wiederholungen aufbewahren. Die Zuordnung verfällt nicht nach 24 Stunden, sondern bleibt bis zur endgültigen Galerielöschung oder Kontoentfernung bestehen.
Uploads verwenden eine dauerhafte UUID, normalisiert auf Kleinbuchstaben. Derselbe Inhalt unter derselben UUID liefert bei Wiederholung dieselbe Datei und URL. Unterschiedliche Bytes führen zu 409 und überschreiben nichts. Eine nach Unterbrechung vorhandene Datei wird anhand ihres deterministischen Namens und SHA-256-Prüfsumme wiedergefunden. Gespeicherte Dateien heißen {photoId}.jpg. Erfolg wird nach Dateiablage und Speicherung der Bestätigung gemeldet; Vorschauen können später fertig werden.
Warteschlange und Fehler
| HTTP | Bedeutung und Reaktion |
|---|---|
| 201 | Neu erstellt/gespeichert: Bestätigung sichern, QR erzeugen |
| 200 | Erfolgreiche Wiederholung: dieselbe Bestätigung verwenden |
| 401 | Konto/App-Passwort prüfen |
| 403 | Berechtigung oder Richtlinie prüfen lassen |
| 404 | Eigene Galerie, Datei oder Freigabe nicht verfügbar |
| 409 | ID-Konflikt oder unbrauchbarer Galerie-Link: Zustand klären, nicht überschreiben |
| 422 | Parameter, JPEG, Dateigröße oder Freigabevorgaben korrigieren |
| 423 | Galerie beschäftigt: Retry-After beachten, derzeit 1 Sekunde |
| 429 | 60 neue Fotos pro Minute erreicht: Retry-After beachten, derzeit 60 Sekunden |
| Netzwerk/5xx | Unklarer Ausgang: ursprüngliche Anfrage beziehungsweise UUID und Bytes mit wachsendem Abstand erneut senden |
Erfolgreiche Wiederholungen zählen nicht gegen das Upload-Limit. Die lokale Warteschlange muss Neustarts überstehen und Fehler/ausstehende Uploads anzeigen. Ohne erfolgreiche Antwort keinen Erfolgs-QR erzeugen. Bei Wiederholung keine neue UUID für dieselbe Aufnahme vergeben. Originalbilder und Bestätigungen gemäß Betreiber-Vorgaben aufbewahren.
Widerrufene, abgelaufene, archivierte oder anders eingeschränkte Links werden nicht automatisch neu veröffentlicht. Eine externe Dateilöschung kann bereits erzeugte Links ungültig machen. Es gibt kein neues Upload-Geheimnis und keinen anonymen Upload-Endpunkt.
Galerie während der Veranstaltung
Die leere Galerie zeigt einen Wartezustand. Sichtbare Fotobox-Galerien aktualisieren sich alle fünf Sekunden; ausgeblendete Tabs pausieren und aktualisieren beim Wiederanzeigen. Ein geöffnetes Foto bleibt anhand seiner Datei-ID ausgewählt. Direkte Ordnerabfragen vermeiden die Wartezeit auf die rekursive Indexierung. Unter normaler Last sollten neue Fotos innerhalb von zehn Sekunden erscheinen; Netz und Verarbeitung können dies verlängern.
Die kompatible Migration speichert Veranstaltungszuordnungen und Upload-Bestätigungen. Sperren verhindern parallele Duplikate, Transaktionen sichern Datenbankgrenzen und deterministische Dateinamen erlauben Wiederaufnahme. Konfigurationen enthalten keine Passwörter; der Anfrage-Fingerprint ist ein HMAC-SHA-256-Digest mit dem Nextcloud-Instanzgeheimnis und wird nicht exportiert. Datenschutzexport und endgültiges Löschen berücksichtigen diese Datensätze. Nach endgültigem Löschen keine Anfragen der alten Veranstaltung mehr wiederholen.