Veröffentlicht Mon, 09 Sep 2024 08:48:04 GMT von Frank Scholz

Hallo zusammen,

ich habe folgendes Problem mit der DocuWare API:

Ich lade ein PDF-Dokument erfolgreich in ein DocuWare-Archiv hoch und erhalte einen HTTP-Statuscode 200 sowie die Dokumenten-ID. Danach versuche ich, die Metadaten des Dokuments mit einem PUT-Request zu aktualisieren. Auch hier erhalte ich einen Status 200, jedoch bleiben die Indexfelder leer.

Hier ist mein Code für die Metadaten-Aktualisierung:

// Minimalistische Anfrage ohne Metadaten
echo "Versuche Upload ohne Metadaten...\n";

$postFields = [
    'file' => new CURLFile($pdfFilePath, 'application/pdf', '12345.pdf')
];

$headers = [
    "Accept: application/json",
    "Content-Type: multipart/form-data"
];

$responseData = uploadDocument($docuwareUrl, $postFields, $headers);

// Wenn der Upload erfolgreich war und eine Dokumenten-ID zurückgegeben wurde
if ($responseData && isset($responseData['Id'])) {
    $documentId = $responseData['Id'];
    echo "Dokument erfolgreich hochgeladen. Dokumenten-ID: $documentId\n";

    // Update mit erweiterten Metadaten
    $updateUrl = "https://xxxxx.docuware.cloud/DocuWare/Platform/FileCabinets/$fileCabinetId/Documents/$documentId/Fields";

// Metadaten für das Update (mit den spezifizierten Feldern)
$metadata = [
    'Fields' => [
        ['FieldName' => 'DOCUMENT_TYPE', 'Item' => 'Rechnung', 'ItemElementName' => 'String'],
        ['FieldName' => 'COMPANY', 'Item' => '100033 Ecobulhart Ltd.', 'ItemElementName' => 'String'],
        ['FieldName' => 'DATE', 'Item' => '2024-09-08T00:00:00Z', 'ItemElementName' => 'DateTime'],
        ['FieldName' => 'DOCUMENT_NUMBER', 'Item' => '12345', 'ItemElementName' => 'String'],
        ['FieldName' => 'NETTOENDBETRAG', 'Item' => '200.00', 'ItemElementName' => 'Decimal'],
        ['FieldName' => 'ABRECHNUNG', 'Item' => 'Abrechnung XYZ', 'ItemElementName' => 'String'],
        ['FieldName' => 'BUCHUNGSDATUM', 'Item' => '2024-09-08T00:00:00Z', 'ItemElementName' => 'DateTime'],
        ['FieldName' => 'MANDANT', 'Item' => 'M1', 'ItemElementName' => 'String']
    ]
];
    
    
    

    // Konvertiere die Metadaten in JSON
    $metadataJson = json_encode($metadata, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
    echo "Sende folgende JSON-Daten:\n$metadataJson\n";

    // Ausgabe der zu sendenden JSON-Daten mit var_dump
echo "Zu sendende JSON-Daten: ";
var_dump($metadataJson);

    // cURL-Anfrage für die Aktualisierung der Metadaten
    $ch = curl_init($updateUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // Verwende PUT für die Aktualisierung
    curl_setopt($ch, CURLOPT_POSTFIELDS, $metadataJson);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "X-Organization: xxxxxxxxxxxxx",  // Stelle sicher, dass die Organisation-ID übermittelt wird
        "Accept: application/json"
    ]);

    // Setze Optionen für die sichere Verbindung und das automatische Folgen von Weiterleitungen
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Automatisch Weiterleitungen folgen
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // SSL-Zertifikatsüberprüfung in einer Produktionsumgebung aktivieren
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); // Session-Cookies verwenden

    echo "Versuche Update der Metadaten...\n";
    $response = curl_exec($ch);

    if (curl_errno($ch)) {
        echo 'Fehler bei der Metadatenaktualisierung: ' . curl_error($ch);
    } else {
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        echo "HTTP-Statuscode: $httpCode\n";
        
        if ($httpCode >= 200 && $httpCode < 300) {
            echo "Antwort Metadatenaktualisierung:\n$response\n";
        } else {
            echo "Fehlerhafte Antwort von der API:\n$response\n";
        }
    }

    curl_close($ch);
}

Trotz des Status 200 bleiben die Indexfelder im Dokument leer. Ich habe bereits geprüft:

  1. Die Feldnamen stimmen mit denen im DocuWare-Archiv überein.
  2. Die Datentypen sind korrekt.
  3. Ich erhalte keine Fehlermeldungen oder Warnungen in der API-Antwort.

Hat jemand eine Idee, woran das liegen könnte oder was ich noch überprüfen sollte?

Vielen Dank im Voraus für jede Hilfe!

Veröffentlicht Tue, 17 Sep 2024 00:00:26 GMT von Matthias Wieland Senior Director Support EMEA
Guten Tag Frank Scholz! Leider sieht es so aus, dass die Community diese Frage nicht beantworten kann. Wir haben deshalb eine neue Supportanfrage mit der Nummer SR-240331-D5Z2Z für Sie eröffnet. Ein Software Support Specialist wird sich direkt bei Ihnen melden, um diese Anfrage zu beantworten. Wir werden die Lösung der Anfrage hier veröffentlichen, sobald diese abgeschlossen ist. Mit freundlichen Grüßen DocuWare Support Team
Veröffentlicht Tue, 17 Sep 2024 09:33:11 GMT von Frank Scholz
Guten Tag! Wir konnten das Problem beheben, indem wir die Daten nun in das application/x-www-form-urlencoded-Format umgewandelt und an den Server gesendet haben. - Es funktioniert. Ich danke trotzdem.

Sie müssen angemeldet sein um Beiträge in den Foren zu erstellen.