Möchten Sie ein Dokument in einem JobRouter-Archiv ablegen, verwenden Sie die POST-Route /application/jobarchive/archives/:archive/documents. Mit dem archive-Parameter geben Sie das Archiv an (Archiv-GUID oder Archivtabelle). Dateien und Indexdaten werden in dem HTTP-Request-Body übertragen:
•Array files – Beinhaltet die Dokument-Dateien
•Array indexFields – Beinhaltet Indexdaten
•Array keywordFields – Beinhaltet Schlüsselwörter
Die Indexdaten werden folgendermaßen aufgebaut:
•indexFields[<Index>][name] – Beinhaltet den Indexfeldname (wie in der Archivkonfiguration definiert)
•indexFields[<Index>][value] – Beinhaltet den Indexfeldwert
Derselbe Index identifiziert ein Name-/Wert-Paar. Die Schlüsselworte folgen den gleichen Muster, allerdings können pro Schlüsselwort mehrere Werte angegeben werden (kommagetrennt unter dem Schlüssel keywords).
Beispiele für Indexdaten
indexFields[0][name] = 'document_type'
indexFields[0][value] = 'Rechnung'
keywordFields[0][name] = 'tag'
keywordFields[0][keywords] = 'Finanzen,Buchhaltung'
Bitte beachten Sie: Nur Benutzer mit einem Archivprofil können Dokumente ins Archiv ablegen.
Antwort
Die Antwort ist im JSON-Format und beinhaltet die ID des archivierten Dokuments, sowie die URLs zum Download der Hauptdatei, der Anhänge und aller Dokument-Dateien:
{
"archivedocumentrevisions": [
{
"revisionId": 12345
}
],
"meta": {
"locations": [
"...\/0E4C6620-B576-D6A0-F919-61B3F2EEBA78\/documents\/12345\/file",
"...\/0E4C6620-B576-D6A0-F919-61B3F2EEBA78\/documents\/12345\/files",
"...\/0E4C6620-B576-D6A0-F919-61B3F2EEBA78\/documents\/12345\/clippedfiles"
]
}
}
Beispiel: Dokument mit zwei Dateien und Indexdaten archivieren
guzzlehttp
// Benutzer wurde bereits authentifiziert
// Dateien und Indexdaten definieren
$documentContentAndMetaData = [
[
'name' => 'indexFields[0][name]',
'contents' => 'title_field',
],
[
'name' => 'indexFields[0][value]',
'contents' => 'Mein REST-Beispiel mit guzzlehttp',
],
[
'name' => 'indexFields[1][name]',
'contents' => 'number_field',
],
[
'name' => 'indexFields[1][value]',
'contents' => '123',
],
[
'name' => 'indexFields[2][name]',
'contents' => 'date_field',
],
[
'name' => 'indexFields[2][value]',
'contents' => '2018-09-21T11:20:40+01:00',
],
[
'name' => 'keywordFields[0][name]',
'contents' => 'tags_field',
],
[
'name' => 'keywordFields[0][keywords]',
'contents' => 'REST',
],
[
'name' => 'files[0]',
'contents' => fopen('/path/to/my/rest/file.pdf', 'r'),
],
[
'name' => 'files[1]',
'contents' => fopen('/path/to/my/rest/note.txt', 'r'),
],
];
try {
$response = $client->request(
'POST',
'application/jobarchive/archives/invoices/documents',
[
'multipart' => $documentContentAndMetaData,
]
);
if ($response->getStatusCode() == 201) {
$body = json_decode($response->getBody(), true);
echo "Dokument-ID: ";
echo $body['archivedocumentrevisions'][0]['revisionId'] . "\n";
}
} catch (Exception $e) {
echo "Fehler beim Ausführen: " . $e->getMessage() . "\n";
}
// Benutzer-Session beenden
cURL
// Benutzer wurde bereits authentifiziert
// Dateien und Indexfelder definieren
$mainFile = new CURLFile('/path/to/invoice/file.pdf');
$clippedFile = new CURLFile('/path/to/invoice/note.txt');
$documentContentAndMetaData = [
'indexFields[0][name]' => 'title_field',
'indexFields[0][value]' => 'Mein REST-Beispiel mit cURL',
'indexFields[1][name]' => 'number_field',
'indexFields[1][value]' => 321,
'indexFields[2][name]' => 'date_field',
'indexFields[2][value]' => '2018-09-21T11:20:40+01:00',
'keywordFields[0][name]' => 'tags_field',
'keywordFields[0][keywords]' => 'REST',
'files[0]' => $mainFile,
'files[1] => $clippedFile
];
curl_setopt($curlHandle, CURLOPT_URL,
'http://example.org/jobrouter/api/rest/v2/application/' .
'jobarchive/archives/invoices/documents');
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_POST, 1);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $documentContentAndMetaData);
curl_setopt($curlHandle, CURLOPT_COOKIEFILE, 'path/to/cookie/file.cookie');
$response = curl_exec($curlHandle);
$statusCode = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
curl_close();
if ($statusCode == 200) {
$documentData = json_decode($response, true);
echo "Dokument-ID: ";
echo $documentData['archivedocumentrevisions'][0]['revisionId'] . "\n";
} else {
echo "Fehler beim Ausführen: Code - " . $statusCode . ", ";
echo "Response: " . var_export($response, true);
}
// Benutzer-Session beenden