List company documents
GET/company/documents
Ruft eine paginierte Liste aller Dokumente ab, die mit dem Unternehmen des authentifizierten Benutzers verknüpft sind.
Ablauf:
- Authentifizierung über gültiges JWT mit der Rolle Manager oder höher
- Validierung der Paginierungsparameter
- Optionale Filterung nach Dokumenttyp
- Paginierte Datenbankabfrage (nur die letzte Version jedes Dokuments)
- Rückgabe der Dokumente mit Metadaten und Dateipfaden
Zugriffsvoraussetzungen:
- Authentifizierung: Gültiges JWT (Bearer-Token)
- Mindestrolle: Unternehmensmanager (isGestor)
- Berechtigungen: Zugriff nur auf Dokumente des eigenen Unternehmens
Typische Anwendungsfälle:
- Abrufen von Rechnungen und Verträgen des Unternehmens
- Filtern von Dokumenten nach Kategorie (documentType)
- Prüfen des Genehmigungsstatus ausstehender Dokumente
- Zugriff auf den Verlauf der letzten Versionen
Dokumentenstatus:
pending: Ausstehende Prüfung durch die Verwaltungapproved: Genehmigt und verfügbar zur Nutzungrejected: Abgelehnt mit spezifiziertem Grund
Wichtige Hinweise:
- Gibt nur die letzte Version jedes Dokuments zurück (schließt veraltete Versionen mit
newVersion: nullaus) - Alle Zeitstempel sind im UTC-Format
- Maximal 100 Dokumente pro Seite
- Sortierung nach Erstellungsdatum absteigend (neueste zuerst)
- Dateien werden in S3/MinIO mit relativen Pfaden in
filePathsgespeichert
Beispielanfrage:
GET /company/documents?page=1&limit=25&documentType=648ac82b769e704acd2c73f5
Authorization: Bearer {token}
Beispiel für eine erfolgreiche Antwort:
\{
docs: [
\{
_id: 5f8d3b7a9c2d1e0f4a6b5c4d,
name: Rechnung
<Heading
id={"request"}
as={"h2"}
className={"openapi-tabs__heading"}
children={"Request"}
>
</Heading>
<ParamsDetails
parameters={[{"name":"page","in":"query","description":"Seitennummer für die Navigation in paginierten Ergebnissen.\nNützlich zur Aufteilung der Anzeige bei vielen Dokumenten.","required":false,"example":1,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","description":"Maximale Anzahl der Dokumente, die pro Seite zurückgegeben werden sollen.\nErmöglicht einen Ausgleich zwischen Leistung (niedrige Werte) und Komfort (hohe Werte).","required":false,"example":25,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"documentType","in":"query","description":"Filtere Dokumente nach einem bestimmten Typ mithilfe der MongoDB-ID.\nDie verfügbaren Typen werden vom Endpunkt /documents/types abgerufen.\nNützlich, um nur Rechnungen, Verträge oder andere Kategorien anzuzeigen.","required":false,"example":"648ac82b769e704acd2c73f5","schema":{"type":"string","format":"ObjectId","pattern":"^[a-f0-9]{24}$"}}]}
>
</ParamsDetails>
<RequestSchema
title={"Body"}
body={undefined}
>
</RequestSchema>
<StatusCodes
id={undefined}
label={undefined}
responses={{"200":{"description":"Liste der Dokumente erfolgreich abgerufen","content":{"application/json":{"schema":{"type":"object","description":"Seitenweise Antwort mit einer Liste der Unternehmensdokumente","properties":{"docs":{"type":"array","description":"Liste der Dokumente der aktuellen Seite","items":{"type":"object","description":"Stellt ein Unternehmensdokument mit seinen Metadaten dar.","properties":{"_id":{"type":"string","description":"Eindeutige Dokumentenkennung (MongoDB ObjectId)","format":"ObjectId","pattern":"^[a-f0-9]{24}$","example":"5f8d3b7a9c2d1e0f4a6b5c4d"},"name":{"type":"string","description":"Beschreibender Dokumentname","minLength":3,"maxLength":100,"example":"Factura Q1 2023"},"status":{"type":"string","description":"Genehmigungsstatus des Dokuments","enum":["pending","approved","rejected"],"example":"approved"},"documentType":{"type":"string","description":"Dokumenttyp-ID (Referenz auf /documents/types)","format":"ObjectId","pattern":"^[a-f0-9]{24}$","example":"5f8d3b7a9c2d1e0f4a6b5c4e"},"version":{"type":"integer","description":"Dokumentversionsnummer","minimum":1,"example":1},"filePaths":{"type":"array","description":"Dateipfade in S3/MinIO (relativ zum Bucket)","items":{"type":"string"},"example":["documents/company1/factura_q1.pdf","documents/company1/anexo.pdf"]},"previousVersion":{"type":"string","description":"ID der vorherigen Version (null, wenn es die erste Version ist)","format":"ObjectId","pattern":"^[a-f0-9]{24}$","nullable":true,"example":null},"createdAt":{"type":"string","description":"Erstellungsdatum des Dokuments (UTC)","format":"date-time","example":"2023-04-15T09:30:00.000Z"},"updatedAt":{"type":"string","description":"Datum der letzten Aktualisierung (UTC)","format":"date-time","example":"2023-04-20T14:15:00.000Z"}},"title":"Document"}},"totalDocs":{"type":"integer","description":"Gesamtzahl der gefundenen Dokumente (alle Seiten)","example":15},"limit":{"type":"integer","description":"Grenze der Dokumente pro Seite","example":10},"page":{"type":"integer","description":"Aktuelle Seite","example":1},"totalPages":{"type":"integer","description":"Gesamtzahl der verfügbaren Seiten","example":2}},"title":"DocumentsPaginatedResponse"},"example":{"docs":[{"_id":"5f8d3b7a9c2d1e0f4a6b5c4d","name":"Factura Q1 2023","status":"approved","documentType":"5f8d3b7a9c2d1e0f4a6b5c4e","version":1,"filePaths":["documents/company1/factura_q1.pdf"],"createdAt":"2023-04-15T09:30:00.000Z","updatedAt":"2023-04-20T14:15:00.000Z"},{"_id":"5f8d3b7a9c2d1e0f4a6b5c4f","name":"Contrato de Servicios","status":"pending","documentType":"5f8d3b7a9c2d1e0f4a6b5c50","version":2,"filePaths":["documents/company1/contrato_v2.pdf","documents/company1/anexo.pdf"],"createdAt":"2023-05-10T11:20:00.000Z","updatedAt":"2023-05-12T16:45:00.000Z"}],"totalDocs":15,"limit":10,"page":1,"totalPages":2}}}},"401":{"description":"Nicht autorisiert - Ungültiges oder fehlendes JWT-Token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["NO_TOKEN","TOKEN_NOT_VALID"]}}},"example":{"error":"NO_TOKEN"}}}},"403":{"description":"Verboten - Unzureichende Berechtigungen","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}},"example":{"error":"NOT_ALLOWED"}}}}}}
>
</StatusCodes>