From 8c7c50b89f61cfa1ccf795c2df33f48a77d6454a Mon Sep 17 00:00:00 2001 From: Kresnadi Budisantoso Date: Fri, 26 Apr 2024 23:39:32 +0200 Subject: [PATCH] RedactManager API Specs for BASF - additional endpoints --- .../src/main/resources/api/documine.yaml | 4 - .../src/main/resources/api/redactmanager.yaml | 2958 +++++++++++++++++ 2 files changed, 2958 insertions(+), 4 deletions(-) create mode 100644 persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml index 4ccd4fb90..8a636dacd 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml @@ -6,15 +6,11 @@ info: The DocuMine API provides a comprehensive solution for managing resources such as dossiers and their associated files. Users can also retrieve components of files that have been processed and extracted by the system. - Given that DocuMine supports multi-tenancy, it is essential to include the 'X-Tenant-ID' header with every request. - This tenant ID is referred to as the "Workspace ID" within the application. - All endpoints are secured using OAuth2, with the "authorizationCode" being the supported authorization flow. Obtain a JWT token for authentication and send it in the 'Authorization' header with the format `Bearer {JWT_TOKEN}`. Example Headers: ```properties - X-Tenant-ID: my-workspace Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI... ``` license: diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml new file mode 100644 index 000000000..cc81a88d9 --- /dev/null +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml @@ -0,0 +1,2958 @@ +openapi: 3.0.2 +info: + title: RedactManager API + version: "4.0.0" + description: | + The RedactManager API provides a comprehensive solution for managing resources such as dossiers and their associated files. + Users can also retrieve the results package for files that have been processed by the system and reviewed by the users. + The results package can contain the optimized PDF file, the preview PDF, the redacted PDF and correlating redaction reports in different formats. + + All endpoints are secured using OAuth2, with the "authorizationCode" being the supported authorization flow. + Obtain a JWT token for authentication and send it in the 'Authorization' header with the format `Bearer {JWT_TOKEN}`. + + Example Headers: + ```properties + Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI... + ``` + license: + name: knecon License + contact: + name: knecon Service Desk + email: support@redactmanager.com + url: https://support.redactmanager.com +externalDocs: + description: Find out more about RedactManager + url: https://docs.redactmanager.com +servers: + - url: https://app.redactmanager.com + description: RedactManager Cloud Service +security: + - FF-OAUTH: [ ] +tags: + - name: 1. Dossier Templates + description: Operations related to dossier templates. + - name: 2. Dossiers + description: Operations for managing dossiers that are based on a dossier template. + - name: 3. Files + description: Operations for managing files within a dossier. + - name: 4. Downloads + description: Operations related to download packages. + - name: 5. License + description: Operations related to license information and usage metrics. +paths: + /api/dossier-templates: + get: + operationId: getAllDossierTemplates + tags: + - 1. Dossier Templates + summary: Retrieve a list of all available dossier templates. + description: | + This endpoint provides a list of all dossier templates stored in the system. + + It returns an object containing an array of dossier template objects under the key `dossierTemplates`. + Each template object contains an identifier, a name, a dossier template status, and other fields with + further details about the template. + + Use this endpoint to fetch all templates before performing actions on specific ones. + responses: + "200": + content: + '*/*': + schema: + $ref: '#/components/schemas/DossierTemplateList' + description: | + Successfully retrieved the list of dossier templates. + + The response could be an empty list if there are no dossier templates at all. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}: + get: + operationId: getDossierTemplate + tags: + - 1. Dossier Templates + summary: Retrieve a specific dossier template by its identifier. + description: | + Utilize this endpoint to retrieve comprehensive details about a designated dossier template. The response encompasses + various attributes such as the dossier template's identifier, name, status, among other pertinent details. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/DossierTemplate' + description: | + Successfully retrieved the requested dossier template. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier-template' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossier-attribute-definitions: + get: + summary: Returns the list of all existing dossier attribute definitions + tags: + - 1. Dossier Templates + description: | + Retrieves a collection of dossier attribute definitions associated with a specific dossier template. Each dossier + attribute definition includes details such as attribute type, name, and other relevant metadata. This endpoint + is useful for clients needing to understand what attributes are expected or allowed for dossiers under a particular + dossier template. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + responses: + "200": + content: + '*/*': + schema: + $ref: '#/components/schemas/DossierAttributeDefinitionList' + description: | + Successfully returned the dossier attribute definitions for the specified dossier template. + # TODO: missing responses + /api/dossier-templates/{dossierTemplateId}/file-attribute-definitions: + get: + summary: Returns the list of all existing file attribute definitions + tags: + - 1. Dossier Templates + description: | + Retrieves a collection of file attribute definitions associated with a specific dossier template. Each file + attribute definition includes details such as attribute type, name, and other relevant metadata. This endpoint + is useful for clients needing to understand what attributes are expected or allowed for files under a particular + dossier template. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + responses: + "200": + content: + '*/*': + schema: + $ref: '#/components/schemas/FileAttributeDefinitionList' + description: | + Successfully returned the file attribute definitions for the specified dossier template. + # TODO: missing responses + /api/dossier-templates/{dossierTemplateId}/dossiers: + get: + operationId: getDossiers + tags: + - 2. Dossiers + summary: Retrieve a list of dossiers based on a specific dossier template. + description: | + By default, this endpoint provides a list of all *active* dossiers that are based on a specific dossier template. + + It returns an object containing an array of dossier objects under the key `dossiers`. Each dossier object contains + an identifier, a name, a description, an owner, and other fields with further details about the dossier. + + Use this endpoint to fetch the required dossiers before performing actions on specific ones. Use the query parameters + to modify the response. E.g., set the `includeArchivedDossiers` parameter to `true` so that the response also contains + *archived* dossiers. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/includeActiveDossiers' + - $ref: '#/components/parameters/includeArchivedDossiers' + - $ref: '#/components/parameters/includeSoftDeletedDossiers' + responses: + "200": + content: + '*/*': + schema: + $ref: '#/components/schemas/DossierList' + description: | + Successfully retrieved the dossiers that are based on the requested dossier template. + + The response could be an empty + list if there are no *active* dossiers based on it. If query parameters have been set, an empty list will be returned if + no dossier matches the respective combination. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier-template' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + post: + operationId: createOrUpdateDossier + tags: + - 2. Dossiers + summary: Creates or updates a dossier for a specific dossier template. + description: | + This endpoint is meant to create a new dossier or to update an existing one. + + To create a new dossier, do not set the identifier of the dossier object provided in the request body. + + To update an existing dossier, the set identifier needs to be valid. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DossierRequest' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/Dossier' + description: | + Successfully saved the dossier. + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/Dossier' + description: | + successfully created the dossier. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier' + "409": + $ref: '#/components/responses/409-dossier-conflict' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}: + delete: + operationId: deleteDossier + tags: + - 2. Dossiers + summary: Deletes a specific dossier by its identifier. + description: | + Removes a dossier either in a recoverable manner (soft-delete) or permanently. By default, a soft-deleted dossier + remains recoverable for a retention period determined by application settings. The default retention period is + 96 hours (4 days) but may vary based on configuration. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + - $ref: '#/components/parameters/permanentlyDeleteDossier' + responses: + "204": + description: | + Dossier deletion successful. Note that the absence of the dossier with the given `dossierId` is confirmed, + regardless of whether it was pre-existing, already removed, or never present. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier-template' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + get: + operationId: getDossier + tags: + - 2. Dossiers + summary: Retrieve a specific dossier by its identifier. + description: | + Utilize this endpoint to retrieve comprehensive details about a designated dossier. The response encompasses various + attributes such as the dossier's unique ID, name, description, associated owner, among other pertinent details. + + If the dossier has been soft-deleted but not yet permanently deleted, the `includeSoftDeleted` parameter can be utilized + to get it. Without this, a soft-deleted dossier would return a `404 Dossier not found` error. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + - $ref: '#/components/parameters/includeSoftDeletedDossier' + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/Dossier' + description: | + Successfully retrieved the requested dossier. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}/attributes: + post: # TODO: review endpoint to set or update dossier attribute values + operationId: setDossierAttributes + tags: + - 2. Dossiers + summary: (DRAFT) Update or set attributes for a specific dossier. + description: | + This endpoint facilitates the updating or setting of specific dossier attributes for a given dossier. + Ensure you provide the necessary dossier attributes within the request body. + + Use this route to maintain or enhance dossier metadata and properties. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DossierAttributes' + required: true + responses: + "200": + description: | + File attributes successfully updated. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}/create-download: + post: # TODO: review endpoint to prepare a download for all files of a dossier + operationId: prepareDossierDownload + tags: + - 3. Dossiers + summary: (DRAFT) Trigger the creation of a download package for all files of a dossier. + description: | + # TODO: add description for endpoint to prepare a download for all files of a dossier + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadRequest' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadStatus' + description: | + Successfully started the creation of the download package for all files of the requested dossier. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}/files: + get: + operationId: getDossierStatus + tags: + - 3. Files + summary: Retrieves the status of the files of a specific dossier. + description: | + This endpoint provides status information for each file within a designated dossier. + + The file status encompasses attributes such as identifier, file name, number of pages, file size, + processing and workflow status, among other pertinent details. By default, only active files + are fetched. However, various parameters can be combined to adjust the scope of the response. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + - $ref: '#/components/parameters/includeActiveFiles' + - $ref: '#/components/parameters/includeArchivedFiles' + - $ref: '#/components/parameters/includeSoftDeletedFiles' + responses: + "200": + content: + '*/*': + schema: + $ref: '#/components/schemas/FileStatusList' + description: | + Successfully retrieved file status information. + + The response could be an empty list if the dossier contains no *active* files. If query parameters + have been set, an empty list will be returned if no file matches the respective combination. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + post: + operationId: upload + tags: + - 3. Files + summary: Upload a file and associate it with a specific dossier. + description: | + This endpoint facilitates the upload of files to a specific dossier. + + Upon successful upload, the system returns the unique identifier of the uploaded file. In cases where the dossier already + contains a file with the same name, the new file will replace the existing one. + + Supported file formats include PDF documents, Microsoft Office documents (if supported by your license), CSV files, and + ZIP archives. + + Notably, Microsoft office files (file extensions `docx`, `xlsx`, or `pptx`) are automatically converted into PDF format + upon upload. Be aware that due to potential font discrepancies, the resulting PDF may slightly differ in appearance from + the original. Nevertheless, our system ensures maximum fidelity to the original content. + + CSV files offer support for bulk importing of file attributes. If the dossier is set up to map specific CSV fields to + file attributes and the uploaded CSV aligns with this mapping, the system will process the CSV accordingly. Mismatched + CSVs will be disregarded. For successfully processed CSV files, the response contains information about the file attributes + and the annotated files. + + ZIP archives offer support to upload multiple files at once. In case of an upload of a ZIP archive, the system returns a + list of unique identifiers of the contained files. The archive can even contain a mix of files like some PDF files and + a CSV file that will annotate some file attributes. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + - $ref: '#/components/parameters/keepManualChanges' + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/UploadRequest' + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/FileUploadResult' + description: | + Successfully uploaded the file. Returns an object with the unique identifier of the uploaded file, a list of unique + identifiers in case of an uploaded ZIP archive, or some annotation information in case of a successfully processing + of an uploaded CSV file. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}/files/{fileId}: + delete: + operationId: deleteFile + tags: + - 3. Files + summary: Deletes a specific file associated with a dossier and its template. + description: | + This endpoint facilitates the removal of a file linked to a specific dossier under a dossier template. By default, the + file undergoes a soft-delete, meaning it can be restored within the retention period determined by application settings. + The default retention period is 96 hours (4 days) but may vary based on configuration. Use the `deletePermanently` query + parameter to opt for a permanent deletion, preventing any future restoration. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + - $ref: '#/components/parameters/fileId' + - $ref: '#/components/parameters/permanentlyDeleteFile' + responses: + "204": + description: | + File deletion successful. This confirms the absence of the specified file, irrespective of its previous existence. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-file' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + get: + operationId: getFileStatus + tags: + - 3. Files + summary: Retrieves the status of a particular file. + description: | + This endpoint is designed to fetch the status of a specific file associated to a dossier based on a dossier template. If + the file has been soft-deleted but not yet permanently deleted, the `includeSoftDeleted` parameter can be utilized to get + the status of such files. Without this, a soft-deleted file would return a `404 File not found` error. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + - $ref: '#/components/parameters/fileId' + - $ref: '#/components/parameters/includeSoftDeletedFile' + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/FileStatus' + description: | + Successfully retrieved the status of the requested file. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-file' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}/files/{fileId}/create-download: + post: # TODO: review endpoint to prepare a download of a single file + operationId: prepareFileDownload + tags: + - 3. Files + summary: (DRAFT) Trigger the creation of a download package for a single file of a dossier. + description: | + # TODO: add description for endpoint to prepare a download of a single file + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FileDownloadRequest' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadStatus' + description: | + Successfully started the creation of the download package for the requested file. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-file' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}/files/bulk/delete: + post: + operationId: deleteFiles + tags: + - 3. Files + summary: Bulk delete specific files within a dossier. (DELETE with body payload) + description: | + This endpoint allows for the bulk deletion of specified files associated with a certain dossier. + + It provides the flexibility to perform either a soft-delete (by default) or a permanent deletion. A soft-deleted + file remains restorable within the retention period set by the application (96h by default). In contrast, permanently + deleted files are irrevocably removed and cannot be restored. + + Use this route to manage large file deletions efficiently. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + - $ref: '#/components/parameters/permanentlyDeleteFiles' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FileDeleteRequest' + required: true + responses: + "204": + description: | + Bulk file deletion successful. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}/files/bulk/create-download: + post: # TODO: review endpoint to prepare a bulk download of multiple files + operationId: prepareBulkDownload + tags: + - 3. Files + summary: (DRAFT) Trigger the creation of a download package for specific files within a dossier. + description: | + # TODO: add description for endpoint to prepare a bulk download of multiple files + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkFileDownloadRequest' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadStatus' + description: | + Successfully started the creation of the download package for the requested files. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-dossier' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/dossier-templates/{dossierTemplateId}/dossiers/{dossierId}/files/{fileId}/attributes: + post: + operationId: setFileAttributes + tags: + - 3. Files + summary: Update or set attributes for a specific file. + description: | + This endpoint facilitates the updating or setting of specific file attributes for a given file within a dossier. + Ensure you provide the necessary file attributes within the request body. + + Use this route to maintain or enhance file metadata and properties. + parameters: + - $ref: '#/components/parameters/dossierTemplateId' + - $ref: '#/components/parameters/dossierId' + - $ref: '#/components/parameters/fileId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FileAttributes' + required: true + responses: + "200": + description: | + File attributes successfully updated. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-file' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/download: + get: # TODO: review endpoint to get the status of all downloads of the current user + operationId: getDownloadStatusList + tags: + - 4. Downloads + summary: TODO + description: | + # TODO: add description for endpoint to get the status of all downloads of the current user + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadStatusList' + description: TODO + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/downloads/{downloadId}: + get: # TODO: review endpoint to get a single download status by id + operationId: getDownloadStatus + tags: + - 4. Downloads + summary: TODO + description: | + # TODO: add description for endpoint to get a single download status by id + parameters: + - $ref: '#/components/parameters/downloadId' + responses: + "200": # TODO: complete response + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadStatus' + description: TODO + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-download' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + delete: # TODO: review endpoint to delete a single download by id + operationId: deleteDownload + tags: + - 4. Downloads + summary: Deletes a specific download. + description: | + This endpoint facilitates the removal of a download. + parameters: + - $ref: '#/components/parameters/downloadId' + responses: + "204": # TODO: complete response + description: | + Download deletion successful. This confirms the absence of the specified download, irrespective of its previous existence. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-download' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/downloads/{downloadId}/download: + get: # TODO: review endpoint to actually do the download + operationId: download + tags: + - 4. Downloads + summary: TODO + description: | + # TODO: add description for endpoint to actually do the download + parameters: + - $ref: '#/components/parameters/downloadId' + responses: + "200": # TODO: complete response + description: TODO + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-download' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/users: + get: # TODO: review endpoint to get a user list + operationId: getUsers + tags: + - 5. Users + summary: TODO + description: | + # TODO: add filter parameters to find a user by login or email (optional) + responses: + 200: + content: + application/json: + schema: + $ref: '#/components/schemas/UserList' + description: TODO + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/users/{userId}: + get: # TODO: review endpoint to get a single user by id + operationId: getUserById + tags: + - 5. Users + summary: TODO + description: | + # TODO: add description for endpoint to get a single user by id + responses: + 200: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: TODO + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "404": + $ref: '#/components/responses/404-user' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' + /api/license/active/usage: + post: + operationId: getLicenseReport + tags: + - 6. License + summary: Generate and retrieve a license usage report. + description: | + This endpoint enables users to create and fetch a report detailing the active usage of licenses. The report contains + valuable insights and metrics that can aid in monitoring and managing license consumption. Ensure your request body + contains the necessary parameters for generating this report. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseReportRequest' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseReport' + description: | + License report successfully generated and retrieved. + "400": + $ref: '#/components/responses/400' + "401": + $ref: '#/components/responses/401' + "403": + $ref: '#/components/responses/403' + "429": + $ref: '#/components/responses/429' + "500": + $ref: '#/components/responses/500' +components: + headers: + X-Tenant-ID: + description: Tenant identifier, also known as the *Workspace ID* in the application. + required: true + schema: + type: string + example: 'my-workspace' + Authorization: + description: JWT token for authorization. Format should be `Bearer {JWT_TOKEN}`. + required: true + schema: + type: string + example: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI...' + responses: + "400": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: | + The request was malformed or invalid. Double-check the request structure or parameters. + "401": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: | + Unauthorized access. You must provide valid authentication credentials to access this + resource. This error can happen if the access token was revoked or has expired. + "403": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: | + Forbidden. Your credentials are valid, but you do not have permission to access this resource. + "404-dossier-template": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: | + Dossier template not found. This happens if the requested dossier template does not exist. + "404-dossier": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: | + Dossier not found. This happens if the dossier template or the dossier is deleted or did never exist. + + Some endpoints support a `includeSoftDeleted` parameter: If this is set to `true`, this response is returned + for a previously existing dossier only if it is actually deleted permanently. + "404-file": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: | + File not found. This indicates that the dossier, dossier template, or file is deleted or did never exist. + + Some endpoints support a `includeSoftDeleted` parameter: If this is set to `true`, this response is returned + only if the file is deleted permanently. + "409-dossier-conflict": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: | + Name conflict: The provided name is already in use by another dossier. It needs to be unique in the scope of your workspace. + 422-rules: + content: + '*/*': + schema: + $ref: '#/components/schemas/RuleValidation' + description: | + Invalid rules file: There were validation errors, the rules file is unprocessable. + "429": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: | + Too many requests have been made in a given time frame. Rate limiting is in place to prevent abuse. + "500": + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorMessage' + description: Internal Server Error. An unexpected error occurred on the server side. Please try again later or contact support. + parameters: + dossierTemplateId: + name: dossierTemplateId + in: path + required: true + schema: + type: string + style: simple + explode: false + description: The identifier of a dossier template + dryRun: + name: dryRun + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A toggle to activate the dry-run mode: If set to `false` (default), the request will update the system. + If set to `true`, the request will just be evaluated without actual changes in the system. + dossierId: + name: dossierId + in: path + required: true + schema: + type: string + style: simple + explode: false + description: The identifier of a dossier + fileId: + name: fileId + in: path + required: true + schema: + type: string + style: simple + explode: false + description: The identifier of a file + includeActiveDossiers: + name: includeActive + in: query + required: false + schema: + default: true + type: boolean + style: form + explode: true + description: | + A toggle to include or exclude active dossiers: If `true` (default), dossiers + that are neither archived nor soft-deleted are included. If `false`, they are + ignored. + includeActiveFiles: + name: includeActive + in: query + required: false + schema: + default: true + type: boolean + style: form + explode: true + description: | + A toggle to include or exclude active files: If set to `true` (default), files + that neither belong to an archived dossier nor have been soft-deleted are + included. If set to `false`, they are ignored. + includeArchivedDossiers: + name: includeArchived + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A toggle to include or exclude archived dossiers: If set to `true`, archived + dossiers are included. If set to `false` (default), they are ignored. + includeArchivedFiles: + name: includeArchived + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A toggle to include or exclude archived files (i.e., files of archived dossiers): + If set to `true`, files of archived dossiers are included. If set to `false` + (default), they are ignored. + includeSoftDeletedDossiers: + name: includeSoftDeleted + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A toggle to include soft-deleted dossiers: + - `true`: The response will include soft-deleted dossiers. + - `false` (default): Soft-deleted dossiers are ignored and will not be part of the response. + + Soft-deleted means that the dossier has not been deleted permanently. + includeSoftDeletedDossier: + name: includeSoftDeleted + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A Toggle to return a soft-deleted dossier: + - `true`: The system returns the dossier regardless whether it has been soft-deleted or not. + - `false` (default): The system returns only non-deleted dossiers. It would return a `404 Dossier not found` error + if the requested dossier has been soft-deleted. + + Soft-deleted means that the dossier has not been deleted permanently. + includeSoftDeletedFiles: + name: includeSoftDeleted + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A toggle to include soft-deleted files: + - `true`: The response will include soft-deleted files. + - `false` (default): Soft-deleted files are ignored and will not be part of the response. + + Soft-deleted means that the file or dossier of the file has not been deleted permanently. + includeSoftDeletedFile: + name: includeSoftDeleted + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A Toggle to return the status of soft-deleted files: + - `true`: The system returns the status of the file regardless whether it has been soft-deleted or not. + - `false` (default): The system returns only non-deleted files. It would return a `404 File not found` error + if the requested file has been soft-deleted. + + Soft-deleted means that the file or dossier of the file has not been deleted permanently. + permanentlyDeleteDossier: + name: deletePermanently + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A toggle to determine the deletion mode for a dossier: + - `true`: The dossier will be permanently deleted and can't be restored. + - `false` (default): Soft-delete, allowing restoration within the application-configured retention period. + + Using this parameter, you can also permanently delete a previously soft-deleted dossier during its retention period. + + Note: Deleting a dossier also deletes all associated files. + permanentlyDeleteFile: + name: deletePermanently + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + Determines the deletion mode for a file. + - `true`: The file will be permanently deleted and can't be restored. + - `false` (default): Soft-delete, allowing restoration within the retention period, provided its parent dossier + hasn't been deleted. If the parent dossier has been deleted meanwhile, it needs to be restored first. + + Using this parameter, you can also permanently delete a previously soft-deleted file during its retention period. + permanentlyDeleteFiles: + name: deletePermanently + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + Determines the deletion mode for a list of files: + - `true`: The files will be permanently deleted and can't be restored. + - `false` (default): Soft-delete, allowing restoration within the retention period, provided the files' parent dossier + hasn't been deleted. If the parent dossier has been deleted meanwhile, it needs to be restored first. + + Using this parameter, you can also permanently delete a previously soft-deleted files during their retention period. + keepManualChanges: + name: keepManualChanges + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A toggle to keep manual changes, i.e., to preserve manually added annotations or manipulations on existing ones when + overwriting a file: + - `true`: The system keeps the manual changes on re-uploading (overwriting) the file. + - `false` (default): Manual changes get discarded on re-uploading the file. + includeComponentDetails: + name: includeDetails + in: query + required: false + schema: + default: false + type: boolean + style: form + explode: true + description: | + A toggle to decide whether to include detailed component information in the response: + - `true`: The component object's field `componentDetails` stores detailed information about the *source* of its + respective value(s). + - `false` (default): The component object does not contain a field `componentDetails`. + schemas: + EntityReference: + type: object + description: | + Represents a reference to an entity object discovered in a document. Together with the unique identifier + of the entity, the reference contains some basic details of the entity. + properties: + id: + type: string + description: | + The unique identifier for the entity. + + Note: In general, it is a valid UUID. Only if an entity spans over multiple pages, it is split on page breaks. Each + part becomes an own entity object and the first one keeps the UUID while the following get an additional suffix. + + Example: Even is `bcd22239-c3df-442f-a5a1-1664cba94dc6_2` is not a valid UUID it is still a valid identifier for an + entity object. + entityRuleId: + type: string + description: An identifier that represents a specific rule associated with the entity. + type: + type: string + description: The name of the entity. + page: + type: integer + format: int32 + description: The page number in the document where the entity is located. + example: + id: bcd22239-cedf-442f-a5a1-1664cba94dc6 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + Component: + type: object + description: Represents a component with its associated values. + properties: + name: + type: string + description: The name of the component. + componentValues: + type: array + description: A list of value objects associated with the component. + items: + $ref: '#/components/schemas/ComponentValue' + example: + name: the component name + componentValues: + - value: my overwritten component value + originalValue: the original value + componentRuleId: COM.0.0 + valueDescription: My value description + entityReferences: + - id: bcd22239-cedf-442f-a5a1-1664cba94dc6 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + - id: bcd22239-c3df-442f-a5a1-1664cba94dc6_2 + entityRuleId: ABC.0.0 + type: entity_type + page: 124 + - id: b748b89a-5679-4254-9286-1dd652d9970b + entityRuleId: DEF.13.37 + type: another_entity_type + page: 456 + - value: yet another component value + originalValue: yet another component value + componentRuleId: COM.0.1 + valueDescription: Another value description + entityReferences: + - id: 70496456-a016-4679-81b1-6c8856dded6e + entityRuleId: XYZ.0.0 + type: yet_another_entity_type + page: 123 + ComponentValue: + type: object + description: Describes a value associated with a component, including its origin and related entities found in the document. + properties: + value: + type: string + description: The current value of the component. + originalValue: + type: string + description: The original value before any modifications. + componentRuleId: + type: string + description: Identifier for the rule associated with this component value. + valueDescription: + type: string + description: A brief description of the value. + entityReferences: + items: + $ref: '#/components/schemas/EntityReference' + type: array + example: + value: my overwritten component value + originalValue: the original value + componentRuleId: COM.0.0 + valueDescription: My value description + entityReferences: + - id: bcd22239-cedf-442f-a5a1-1664cba94dc6 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + - id: b748b89a-5679-4254-9286-1dd652d9970b + entityRuleId: DEF.13.37 + type: another_entity_type + page: 456 + FileComponents: + type: object + description: Represents file details along with its associated components and values. + properties: + dossierTemplateId: + format: uuid + type: string + description: Identifier for the template associated with the dossier. + dossierId: + format: uuid + type: string + description: Identifier for the dossier. + fileId: + type: string + description: Identifier for the file. + filename: + type: string + description: Name of the file. + components: + type: object + description: A map of component names to their list of values. + additionalProperties: + items: + type: string + type: array + componentDetails: + type: object + description: A map of component names to their detailed representations. + additionalProperties: + $ref: '#/components/schemas/Component' + example: + dossierTemplateId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + dossierId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + fileId: 1fdbd888b39059c8cf171df26f62f8a5 + filename: MyFile.pdf + components: + "my component": + - my overwritten component value + - yet another component value + "yet another component": + - only one value + componentDetails: + - name: my component + componentValues: + - value: my overwritten component value + originalValue: the original value + componentRuleId: COM.0.0 + valueDescription: My value description + entityReferences: + - id: bcd22239-cedf-442f-a5a1-1664cba94dc6 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + - id: b748b89a-5679-4254-9286-1dd652d9970b + entityRuleId: DEF.13.37 + type: another_entity_type + page: 456 + - value: yet another component value + originalValue: yet another component value + componentRuleId: COM.0.1 + valueDescription: Another value description + entityReferences: + - id: 70496456-a016-4679-81b1-6c8856dded6e + entityRuleId: XYZ.0.0 + type: yet_another_entity_type + page: 123 + - name: yet another component + componentValues: + - value: only one value + originalValue: only one value + componentRuleId: COM.0.0 + valueDescription: My value description + entityReferences: + - id: bcd22239-cedf-442f-a5a1-1664cba94dc6 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + - id: b748b89a-5679-4254-9286-1dd652d9970b + entityRuleId: DEF.13.37 + type: another_entity_type + page: 456 + FileComponentsList: + type: object + description: A list of files and their associated components. + properties: + files: + type: array + description: List of files with their component details. + items: + $ref: '#/components/schemas/FileComponents' + example: + files: + - dossierTemplateId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + dossierId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + fileId: 1fdbd888b39059c8cf171df26f62f8a5 + filename: MyFile.pdf + components: + "my component": + - my overwritten component value + - yet another component value + "yet another component": + - only one value + componentDetails: + - name: my component + componentValues: + - value: my overwritten component value + originalValue: the original value + componentRuleId: COM.0.0 + valueDescription: My value description + entityReferences: + - id: bcd22239-cedf-442f-a5a1-1664cba94dc6 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + - id: b748b89a-5679-4254-9286-1dd652d9970b + entityRuleId: DEF.13.37 + type: another_entity_type + page: 456 + - value: yet another component value + originalValue: yet another component value + componentRuleId: COM.0.1 + valueDescription: Another value description + entityReferences: + - id: 70496456-a016-4679-81b1-6c8856dded6e + entityRuleId: XYZ.0.0 + type: yet_another_entity_type + page: 123 + - name: yet another component + componentValues: + - value: only one value + originalValue: only one value + componentRuleId: COM.0.0 + valueDescription: My value description + entityReferences: + - id: bcd22239-cedf-442f-a5a1-1664cba94dc6 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + - id: b748b89a-5679-4254-9286-1dd652d9970b + entityRuleId: DEF.13.37 + type: another_entity_type + page: 456 + - dossierTemplateId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + dossierId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + fileId: 4d2334def5fced0003888e47cbc270f7 + filename: Copy of MyFile.pdf + components: + "my component": + - my overwritten component value + - yet another component value + "yet another component": + - only one value + componentDetails: + - name: my component + componentValues: + - value: my overwritten component value + originalValue: the original value + componentRuleId: COM.0.0 + valueDescription: My value description + entityReferences: + - id: dadb54d4-587b-4e69-8c07-be9446a33537 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + - id: 30339f5a-4c19-447f-b0a0-0f14c094037e + entityRuleId: DEF.13.37 + type: another_entity_type + page: 456 + - value: yet another component value + originalValue: yet another component value + componentRuleId: COM.0.1 + valueDescription: Another value description + entityReferences: + - id: 086cd500-97da-44f8-8628-3324d11b4e8d + entityRuleId: XYZ.0.0 + type: yet_another_entity_type + page: 123 + - name: yet another component + componentValues: + - value: only one value + originalValue: only one value + componentRuleId: COM.0.0 + valueDescription: My value description + entityReferences: + - id: dadb54d4-587b-4e69-8c07-be9446a33537 + entityRuleId: ABC.0.0 + type: entity_type + page: 123 + - id: 30339f5a-4c19-447f-b0a0-0f14c094037e + entityRuleId: DEF.13.37 + type: another_entity_type + page: 456 + DossierAttributeDefinition: + type: object + description: | + The `DossierAttributeDefinition` object contains the relevant information to define a dossier attribute. Dossier attributes + are used to manage additional meta-data of dossiers. + properties: + id: + type: string + format: uuid + description: | + A unique identifier for the dossier attribute definition. This ID is automatically generated by + the system upon creation and is used for referencing the dossier attribute definition in API calls. + name: + type: string + description: | + User-defined name of the dossier attribute definition, capturing its essence. The name needs to be unique + for the dossier template. + type: + type: string + enum: + - TEXT + - NUMBER + - DATE + description: | + Determines the type of the dossier attribute's value. Please note that currently the system + does not validate the values against this definition. This is just a hint for a user interface + that needs to handle invalid entries. Possible values for the type: + - `TEXT`: The value is just a string, i.e., any sequence of characters. + - `NUMBER`: The value is a string expressing a number, with or without decimals. + - `DATE`: The value is a string expressing a date information. + reportingPlaceholder: + type: string + description: | + The name of the placeholder of the dossier attribute that can be used in report templates. The + placeholder follows a specific format convention: + `{{dossier.attribute.}}` while the name is transformed into 'PascalCase' and does not contain + whitespaces. The placeholder is unique in a dossier template. + required: + - name + - type + example: + id: "123e4567-e89b-12d3-a456-426614174000" + name: "Document Summary" + type: "TEXT" + reportingPlaceholder: "{{dossier.attribute.DocumentSummary}}" + FileAttributeDefinition: + type: object + description: | + The `FileAttributeDefinition` object contains the relevant information to define a file attribute. File attributes + are used to manage additional meta-data of files. + properties: + id: + type: string + format: uuid + description: | + A unique identifier for the file attribute definition. This ID is automatically generated by + the system upon creation and is used for referencing the file attribute definition in API calls. + name: + type: string + description: | + User-defined name of the file attribute definition, capturing its essence. The name needs to be unique + for the dossier template. + type: + type: string + enum: + - TEXT + - NUMBER + - DATE + description: | + Determines the type of the file attribute's value. Please note that currently the system + does not validate the values against this definition. This is just a hint for a user interface + that needs to handle invalid entries. Possible values for the type: + - `TEXT`: The value is just a string, i.e., any sequence of characters. + - `NUMBER`: The value is a string expressing a number, with or without decimals. + - `DATE`: The value is a string expressing a date information. + mappedCsvColumnHeader: + type: string + description: | + The name of a CSV column. When importing a CSV file with additional file information the system gets the value from the respective CSV column. + reportingPlaceholder: + type: string + description: | + The name of the placeholder of the file attribute that can be used in report templates. The placeholder follows a specific format convention: + `{{file.attribute.}}` while the name is transformed into 'PascalCase' and does not contain whitespaces. The placeholder is unique in a dossier template. + displaySettings: + $ref: '#/components/schemas/FileAttributeDisplaySettings' + required: + - name + - type + example: + id: "123e4567-e89b-12d3-a456-426614174000" + name: "Document Type" + type: "TEXT" + mappedCsvColumnHeader: "DocumentCategory" + reportingPlaceholder: "{{file.attribute.DocumentType}}" + displaySettings: + primaryAttribute: true + editable: true + filterable: true + displayedInFileList: false + FileAttributeDisplaySettings: + type: object + description: | + Display setting for the RedactManager user interface. These settings control how the UI handles and presents the file attributes. + properties: + primaryAttribute: + type: boolean + description: | + If `true`, the RedactManager user interfaces show the value of the file attribute in the file list below the file name. + editable: + type: boolean + description: | + If `true`, the RedactManager user interfaces allow manual editing of the value. Otherwise only importing and setting by rules would be possible. + filterable: + type: boolean + description: | + If `true`, the RedactManager user interfaces add filter options to the file list. + displayedInFileList: + type: boolean + description: | + if `true`, the RedactManager user interfaces show the values in the file list. + required: + - primaryAttribute + - editable + - filterable + - displayedInFileList + example: + primaryAttribute: false + editable: true + filterable: true + displayedInFileList: false + DossierAttributeDefinitionList: + type: object + description: A list of dossier attribute definitions. + properties: + dossierAttributeDefinitions: + items: + $ref: '#/components/schemas/DossierAttributeDefinition' + type: array + example: + dossierAttributeDefinitions: + - id: "123e4567-e89b-12d3-a456-426614174000" + name: "Dossier Summary" + type: "TEXT" + reportingPlaceholder: "{{dossier.attribute.DossierSummary}}" + - id: "23e45678-e90b-12d3-a456-765114174321" + name: "Comment" + type: "TEXT" + reportingPlaceholder: "{{dossier.attribute.Comment}}" + FileAttributeDefinitionList: + type: object + description: A list of file attribute definitions. + properties: + csvImportSettings: + $ref: '#/components/schemas/CsvImportSettings' + fileAttributeDefinitions: + items: + $ref: '#/components/schemas/FileAttributeDefinition' + type: array + example: + csvImportSettings: + csvMappingActive: true + filenameMappingCsvColumnHeader: "Filename" + delimiter: "," + encoding: "UTF-8" + fileAttributeDefinitions: + - id: "123e4567-e89b-12d3-a456-426614174000" + name: "Document Type" + type: "TEXT" + mappedCsvColumnHeader: "DocumentCategory" + reportingPlaceholder: "{{file.attribute.DocumentType}}" + displaySettings: + primaryAttribute: true + editable: true + filterable: true + displayedInFileList: false + - id: "23e45678-e90b-12d3-a456-765114174321" + name: "Comment" + type: "TEXT" + reportingPlaceholder: "{{file.attribute.Comment}}" + displaySettings: + primaryAttribute: false + editable: true + filterable: false + displayedInFileList: false + CsvImportSettings: + type: object + description: | + This object defines the settings for importing data from a CSV file. It includes + information that indicates if the CSV mapping is active, specifies the column header + used for filename matching, sets the delimiter for column separation, and determines + the encoding of the CSV file. These settings are crucial for accurately importing and + mapping file attributes based on the corresponding CSV records. + properties: + csvMappingActive: + type: boolean + description: | + If `true`, the CSV mapping is active. + filenameMappingCsvColumnHeader: + type: string + description: | + The header of a specific column in the CSV file that should contain values + matching the filenames. A matching value identifies the record that is used + to import the mapped file attributes. + delimiter: + type: string + maxLength: 1 + description: | + The delimiter of the CSV file that is used to distinguish different columns. + encoding: + type: string + description: | + The encoding of the CSV file that is expected when uploading for the import of file attributes. + example: + csvMappingActive: true + filenameMappingCsvColumnHeader: "Filename" + delimiter: "," + encoding: "UTF-8" + DossierAttributes: + type: object + description: (DRAFT) Additional dossier attributes that can be set + properties: + attributeIdToValue: + additionalProperties: + type: string + type: object + example: + myDossierAttribute: This is a file attribute value + yetAnotherDossierAttribute: This is yet another file attribute value + numericValuesNeedToBeStrings: "1234" + myDossierDate: "1. January 1337" + Dossier: + type: object + description: | + The `Dossier` object captures all relevant information related to a specific dossier. A dossier is a collection + of documents, managed and analyzed based on settings and rules of the `DossierTemplate` it is derived from. + properties: + id: + type: string + format: uuid + description: | + A unique identifier for the dossier. This ID is automatically generated by + the system upon creation and is used for referencing the dossier in API calls. + name: + type: string + description: | + User-defined name of the dossier, capturing its essence. The name needs to be unique + for the entire workspace (i.e., tenant). + date: + type: string + format: date-time + description: | + The date when the dossier was created. This is automatically set by the system upon the dossier's creation. + dossierTemplateId: + type: string + format: uuid + description: The unique identifier for the template that governs the settings and rules for this dossier. + description: + type: string + description: A detailed narrative explaining the purpose and contents of the dossier. + ownerId: + type: string + format: uuid + description: | + The identifier of the user or entity responsible for the dossier. Typically, + this is the creator or main contact point for the dossier. Only users with "Manager" + privileges can create dossiers and become dossier owners. + memberIds: + type: array + items: + type: string + format: uuid + uniqueItems: true + description: List of unique user identifiers associated with this dossier, such as contributors or viewers. + approverIds: + type: array + items: + type: string + format: uuid + uniqueItems: true + description: | + List of unique user identifiers with elevated permissions. Needed if using an approval workflow. + visibility: + type: string + enum: + - PRIVATE + - PUBLIC + description: | + Determines who can see the dossier. Possible values include: + - `PRIVATE`: Visible to dossier members only. + - `PUBLIC`: Visible to all users. + + The system sets the value based on the permissions defined in the application. + startDate: + type: string + format: date-time + description: The starting date for the lifecycle of this dossier. + dueDate: + type: string + format: date-time + description: The end date or deadline for actions related to this dossier. + dossierStatusId: + type: string + format: uuid + description: The unique identifier of the current status of the dossier. The status definitions are managed in the dossier template. + watermarkId: + type: string + format: uuid + deprecated: true + description: | + Identifier for the watermark that's to be applied on redacted documents within this dossier. + previewWatermarkId: + type: string + format: uuid + deprecated: true + description: | + Identifier for the watermark pattern used for generated previews documents within this dossier. + dossierAttributes: + $ref: '#/components/schemas/DossierAttributes' + downloadFileTypes: + $ref: '#/components/schemas/DownloadFileTypes' + reportTemplateIds: + type: array + items: + type: string + format: uuid + uniqueItems: true + description: | + List of template identifiers indicating which templates are to be used for generating reports or outputs + for this dossier. The reports are generated when requesting a download package. + archivedTime: + type: string + format: date-time + description: The date and time when the dossier was archived. Archived dossiers are read-only and cannot be modified. + softDeletedTime: + type: string + format: date-time + description: | + The timestamp indicating when the dossier was softly deleted, i.e., hidden from + most users but not completely removed from the system. `null` if not deleted. + + A soft-deleted dossier can be restored within a retention period configured in the application. + hardDeletedTime: + type: string + format: date-time + description: The timestamp indicating when the dossier was permanently removed from the system. `null` if not deleted. + example: + id: 2ef05d6a-6fb3-4f27-b3c7-9a6438b38c3b + name: Project Alpha + date: 2000-01-23T04:56:07.000+00:00 + dossierTemplateId: 1ed2db85-9cd5-48b0-855f-77ca2a688501 + description: Collection of documents for Project Alpha. + ownerId: a0044ae9-ddca-4f97-b0a1-3cb2517dbf39 + memberIds: + - da8d5f98-ae61-4696-85bf-27986d93877c + - f4a0beb4-4034-4b92-a75e-5f37591326ea + approverIds: + - da8d5f98-ae61-4696-85bf-27986d93877c + - f4a0beb4-4034-4b92-a75e-5f37591326ea + visibility: PRIVATE + startDate: null + dueDate: 2001-01-23T04:56:07.000+00:00 + dossierStatusId: b8280985-f558-43c0-852a-a3fa86803548 + watermarkId: null + previewWatermarkId: null + downloadFileTypes: + - ORIGINAL + - PREVIEW + reportTemplateIds: + - daadea5f-917b-482a-b7d2-e65afe8f80ca + - 8130acf6-4910-4123-827c-caacd8111402 + archivedTime: null + softDeletedTime: null + hardDeletedTime: null + DossierList: + type: object + description: A list of dossiers. + properties: + dossiers: + items: + $ref: '#/components/schemas/Dossier' + type: array + example: + dossiers: + - id: 2ef05d6a-6fb3-4f27-b3c7-9a6438b38c3b + name: Project Alpha + date: 2000-01-23T04:56:07.000+00:00 + dossierTemplateId: 1ed2db85-9cd5-48b0-855f-77ca2a688501 + description: Collection of documents for Project Alpha. + ownerId: a0044ae9-ddca-4f97-b0a1-3cb2517dbf39 + memberIds: + - da8d5f98-ae61-4696-85bf-27986d93877c + - f4a0beb4-4034-4b92-a75e-5f37591326ea + approverIds: + - da8d5f98-ae61-4696-85bf-27986d93877c + - f4a0beb4-4034-4b92-a75e-5f37591326ea + visibility: PUBLIC + startDate: null + dueDate: 2001-01-23T04:56:07.000+00:00 + dossierStatusId: b8280985-f558-43c0-852a-a3fa86803548 + watermarkId: null + previewWatermarkId: null + downloadFileTypes: + - ORIGINAL + - PREVIEW + reportTemplateIds: + - daadea5f-917b-482a-b7d2-e65afe8f80ca + - 8130acf6-4910-4123-827c-caacd8111402 + archivedTime: null + softDeletedTime: null + hardDeletedTime: null + - id: dc28cc82-2682-4b7f-ae0b-2132b205d47a + name: Project Beta + date: 2001-01-23T04:56:07.000+00:00 + dossierTemplateId: 1ed2db85-9cd5-48b0-855f-77ca2a688501 + description: Collection of documents for Project Beta. + ownerId: 0d53a7c3-7b3a-4c57-857d-ec5e0fc3019b + memberIds: + - a0044ae9-ddca-4f97-b0a1-3cb2517dbf39 + - c2e33246-e50a-4c43-831c-6789a5637db8 + - 6123fa16-6943-4b74-8524-54b0046a0ce6 + visibility: PUBLIC + startDate: null + dueDate: 2001-01-23T04:56:07.000+00:00 + dossierStatusId: b8280985-f558-43c0-852a-a3fa86803548 + watermarkId: null + previewWatermarkId: null + downloadFileTypes: + - ORIGINAL + - PREVIEW + reportTemplateIds: + - daadea5f-917b-482a-b7d2-e65afe8f80ca + - 8130acf6-4910-4123-827c-caacd8111402 + archivedTime: null + softDeletedTime: null + hardDeletedTime: null + DossierRequest: + type: object + description: | + Object containing essential attributes for creating or updating a dossier. + Includes information about ownership, members, approvers, and various configurations + like watermarks and download file types. + properties: + id: + type: string + format: uuid + description: | + The unique identifier of the dossier to update. This property needs to be null for create requests, + as the system will generate it automatically. If the value is not a valid identifier, the + endpoint will return a `400 Bad request` error. + name: + type: string + description: | + A human-readable name for the dossier. The name must be unique among all dossiers + within the scope of the workspace (tenant). + description: + type: string + description: | + A textual description providing additional context or information + about the purpose and content of the dossier. + dueDate: + type: string + format: date-time + description: | + Specifies the deadline by which actions related to this dossier should be completed. + The date is in ISO 8601 date-time format. + ownerId: + type: string + format: uuid + description: | + A unique identifier representing the user who owns or created this dossier. + If `null` when creating the dossier, the current user will be set as the owner. + Must not be `null` when updating a dossier. + memberIds: + type: array + description: An array of unique identifiers for users who have access to the dossier. + items: + type: string + description: A unique identifier for a member with access to the dossier. + uniqueItems: true + reportTemplateIds: + type: array + description: | + An array of identifiers representing templates used for generating reports + or exports from this dossier. + items: + description: An identifier for a report template. + type: string + uniqueItems: true + dossierStatusId: + type: string + description: | + An identifier representing the current status of the dossier. + Use `null` to unset the current status. + required: + - name + example: + id: dc28cc82-2682-4b7f-ae0b-2132b205d47a + name: Project Beta + description: Collection of documents for Project Beta. + dueDate: 2001-01-23T04:56:07.000+00:00 + ownerId: 0d53a7c3-7b3a-4c57-857d-ec5e0fc3019b + memberIds: + - a0044ae9-ddca-4f97-b0a1-3cb2517dbf39 + - c2e33246-e50a-4c43-831c-6789a5637db8 + - 6123fa16-6943-4b74-8524-54b0046a0ce6 + reportTemplateIds: + - daadea5f-917b-482a-b7d2-e65afe8f80ca + - 8130acf6-4910-4123-827c-caacd8111402 + dossierStatusId: b8280985-f558-43c0-852a-a3fa86803548 + DossierTemplate: + description: | + The `DossierTemplate` object represents the blueprint for creating and + managing dossiers and for handling and analyzing the files of dossiers. + It contains various settings, rules, and metadata to control the behavior + of individual dossiers that get created based on this template. + example: + id: 1e07cde0-d36a-4ab7-b389-494ca694a0cb + name: RedactManager Example + description: Typical settings for RedactManager. + dateAdded: 2020-01-23T04:56:07.000+00:00 + dateModified: 2021-01-23T04:56:07.000+00:00 + createdBy: c2e33246-e50a-4c43-831c-6789a5637db6 + modifiedBy: c2e33246-e50a-4c43-831c-6789a5637db6 + validFrom: 2020-01-01T00:00:00.000+00:00 + validTo: 2030-12-31T23:59:59.999+00:00 + dossierTemplateStatus: ACTIVE + removeWatermark: false + keepImageMetadata: false + ocrByDefault: false + keepHiddenText: false + keepOverlappingObjects: false + applyDictionaryUpdatesToAllDossiersByDefault: false + downloadFileTypes: + - PREVIEW + - REDACTED + properties: + id: + description: | + A unique identifier generated by the system when the dossier template + is created. This ID is used to reference the template in API calls. + type: string + format: uuid + name: + description: The user-defined name of the dossier template, required for create and update operations. + type: string + description: + description: A detailed description of the purpose and usage of this dossier template. + type: string + dateAdded: + description: The date when this dossier template was first created. Automatically set by the system. + format: date-time + type: string + dateModified: + description: | + The most recent date when modifications were made to this dossier template. + Automatically set by the system. + format: date-time + type: string + createdBy: + description: The identifier of the user who initially created this dossier template. Automatically set by the system. + type: string + format: uuid + modifiedBy: + description: The identifier of the user who last modified this dossier template. Automatically set by the system. + type: string + format: uuid + validFrom: + description: | + The starting date for the validity of this dossier template. Dossiers can only be created + based on this template after this date. + format: date-time + type: string + validTo: + description: | + The ending date for the validity of this dossier template. Dossiers will no longer be able to + be created based on this template after this date. + format: date-time + type: string + downloadFileTypes: + $ref: '#/components/schemas/DownloadFileTypes' + status: + description: | + Indicates the current status of the dossier template: + * `INCOMPLETE`: The dossier template is missing some information or settings. Dossiers cannot be created based + on this template until the missing information and settings are added. + * `INACTIVE`: The dossier template cannot be used for creating dossiers based on it. + * `ACTIVE`: The dossier template can be used for creating dossiers based on it. + enum: + - INCOMPLETE + - INACTIVE + - ACTIVE + type: string + keepImageMetadata: + description: Flag indicating whether metadata from images in PDFs should be retained or removed. + type: boolean + keepHiddenText: + description: Flag indicating whether hidden text in PDFs should be retained or removed. + type: boolean + keepOverlappingObjects: + description: Flag indicating whether overlapping objects in PDFs should be retained or flattened. + type: boolean + applyDictionaryUpdatesToAllDossiersByDefault: + description: | + Flag indicating whether updates to the dictionary should automatically be applied to all dossiers + created from this template. + type: boolean + ocrByDefault: + description: Flag specifying if OCR should be automatically applied to PDFs that get upload to dossiers based on this template. + type: boolean + removeWatermark: + description: Flag specifying if the system should try to remove watermarks in documents prior to OCR processing. + type: boolean + type: object + DownloadFileTypes: + type: array + uniqueItems: true + description: | + Specifies the types of files that will part of the created download package. The defaults can be defined in the dossier template + and can be overwritten individually on each download. + + RedactManager supports `ORIGINAL`, `PREVIEW`, `DELTA_PREVIEW`, and `REDACTED`: + + - `ORIGINAL` Contrary to intuition, this is not the uploaded file, but the pre-processed, + optimized PDF, which may also contain the OCR results. + This is the PDF that used by the system for further processing. + - `PREVIEW` The annotated version of the PDF indicating what gets redacted by the + system. Note that the content to redact is actually still present and readable. + The redaction information is embedded so you can restore the redactions when uploading the + `PREVIEW` PDF into RedactManager. + - `DELTA_PREVIEW` Shows changes if redactions were imported (e.g., by uploading a Preview PDF + with redaction annotations): + Unchanged imported redactions are highlighted in green, removed imported redactions are + highlighted in red, changed imported redactions (e.g. resized) are highlighted in yellow, + and additional redactions are highlighted in blue. + - `REDACTED` The ISO27038 compliant sanitized PDF file that contains all redactions. + items: + enum: + - ORIGINAL + - PREVIEW + - DELTA_PREVIEW + - REDACTED + type: string + DossierTemplateList: + description: Represents a list of dossier templates, each encapsulating a set of rules and settings. + example: + dossierTemplates: + - id: 1e07cde0-d36a-4ab7-b389-494ca694a0cb + name: RedactManager Example + description: Typical settings for RedactManager. + dateAdded: 2020-01-23T04:56:07.000+00:00 + dateModified: 2021-01-23T04:56:07.000+00:00 + createdBy: c2e33246-e50a-4c43-831c-6789a5637db6 + modifiedBy: c2e33246-e50a-4c43-831c-6789a5637db6 + validFrom: 2020-01-01T00:00:00.000+00:00 + validTo: 2030-12-31T23:59:59.999+00:00 + dossierTemplateStatus: ACTIVE + removeWatermark: false + keepImageMetadata: false + ocrByDefault: false + keepHiddenText: false + keepOverlappingObjects: false + applyDictionaryUpdatesToAllDossiersByDefault: false + downloadFileTypes: + - PREVIEW + - REDACTED + - id: 8d8cae48-5c33-4617-ac27-1643f29b79d8 + name: RedactManager Example + description: Typical settings for RedactManager. + dateAdded: 2023-09-01T06:54:32.000+00:00 + dateModified: 2023-09-01T06:54:32.000+00:00 + createdBy: 46a7f9d3-6ba0-41d7-b312-b8e708aa6f4d + modifiedBy: 46a7f9d3-6ba0-41d7-b312-b8e708aa6f4d + validFrom: 2023-01-01T00:00:00.000+00:00 + validTo: 2033-12-31T23:59:59.999+00:00 + dossierTemplateStatus: ACTIVE + removeWatermark: true + keepImageMetadata: true + ocrByDefault: true + keepHiddenText: true + keepOverlappingObjects: true + applyDictionaryUpdatesToAllDossiersByDefault: false + downloadFileTypes: + - ORIGINAL + properties: + dossierTemplates: + description: Each entry is a dossier template with its details. + items: + $ref: '#/components/schemas/DossierTemplate' + type: array + type: object + ErrorMessage: + type: object + description: | + Represents an error message returned by the API, providing details on when the error occurred + and a description of the issue. + properties: + timestamp: + type: string + format: date-time + description: The exact date and time when the error was encountered. This can be useful for logging or troubleshooting. + message: + type: string + description: A detailed description of the error, providing insights on the problem and potentially how to resolve or avoid it. + example: + timestamp: "2023-09-21T12:45:00Z" + message: "An error occurred while processing the request." + FileAttributes: + type: object + description: Additional file attributes that can be set or imported + properties: + attributeIdToValue: + additionalProperties: + type: string + type: object + example: + myFileAttribute: This is a file attribute value + yetAnotherFileAttribute: This is yet another file attribute value + numericValuesNeedToBeStrings: "1234" + myFileDate: "1. January 1337" + FileDeleteRequest: + type: object + description: Request payload to initiate the deletion of specific files. + properties: + fileIds: + type: array + description: A list of unique identifiers for the files to be deleted. + items: + type: string + description: The unique identifier of a file. + example: + fileIds: + - 51d3f70ac322c98dc4db70a2ac44115a + - 1fdbd888b39059c8cf171df26f62f8a5 + FileErrorInfo: + type: object + description: Detailed information about an error encountered with a file. + properties: + cause: + type: string + description: The underlying reason or cause of the error. + queue: + type: string + description: The queue or process where the error was encountered. + service: + type: string + description: The specific service or component that reported the error. + timestamp: + type: string + format: date-time + description: The exact time when the error was recorded. + example: + service: LayoutParsingService + cause: The reason or cause why something went wrong. + queue: LAYOUT_PARSING_REQUEST_QUEUE + timestamp: 2000-01-23T04:56:07.000+00:00 + FileStatus: + type: object + description: Object containing information on a specific file. + properties: + id: + type: string + description: The unique identifier of the file. + dossierId: + type: string + format: uuid + description: The unique identifier linking the file to its associated dossier. + dossierTemplateId: + type: string + format: uuid + description: The identifier of the dossier template of the file's dossier. + dossierStatusId: + type: string + format: uuid + description: The identifier of the dossier status of the file's dossier. + filename: + description: The file's name. + type: string + dossierArchived: + description: Tells if the dossier of this file is archived or not. + type: boolean + processingStatus: + type: string + enum: + - ANALYSE + - ERROR + - FULLREPROCESS + - IMAGE_ANALYZING + - INDEXING + - NER_ANALYZING + - OCR_PROCESSING_QUEUED + - OCR_PROCESSING + - PROCESSED + - PROCESSING + - REPROCESS + - UNPROCESSED + - FULL_PROCESSING + - PRE_PROCESSING_QUEUED + - PRE_PROCESSING + - PRE_PROCESSED + - FIGURE_DETECTION_ANALYZING + - TABLE_PARSING_ANALYZING + description: | + The processing status of a file. The states give detailed information about the current processing step. + In general, this information is useful for debugging is the file is stuck in a status. + + The status `UNPROCESSED` indicates a newly uploaded file. Status `ERROR` indicates that the system could not + process the file for some reason. Finally, `PROCESSED` is what you usually expect as the final state after + all required processing steps are done. + workflowStatus: + type: string + enum: + - NEW + - UNDER_REVIEW + - UNDER_APPROVAL + - APPROVED + description: | + The workflow status of a file. + + - `NEW` - Initial status of the uploaded files. + - `UNDER_REVIEW` - The redactions of the document are under review. In this status, users can make corrections + and add redactions. + - `UNDER_APPROVAL` - The redactions have been reviewed and the document is ready for final approval. With this additional status, + a four-eyes-principle can be applied. However, users can still make final corrections and add redactions before + approving the file. + - `APPROVED` - Files have been reviewed and finally approved. Redactions of files in this final state are no longer modified by the + system's automatic analysis and are also read-only for users. I.e., the files must be returned to a previous status to make + changes to the redactions. + numberOfPages: + description: The number of pages of the file. + format: int32 + type: integer + added: + description: Date and time when the file was added to the system. + format: date-time + type: string + lastUpdated: + description: Date and time when the file was last updated. + format: date-time + type: string + numberOfAnalyses: + description: The number of times the file has been analyzed. + format: int32 + type: integer + assignee: + description: The current assignee's (if any) user id. + type: string + lastReviewer: + description: The last reviewer's (if any) user id. + type: string + lastApprover: + description: The user id of the last approver (if any). + type: string + hasRedactions: + description: Shows if any redactions were found during the analysis. + type: boolean + hasHints: + description: Shows if any hints were found during the analysis. + type: boolean + hasRequests: + description: Shows if any requests were found during the analysis. + type: boolean + hasUpdates: + description: | + Shows if there is any change between the previous and current + analysis. + type: boolean + hasImages: + description: Shows if any images were found during the analysis. + type: boolean + ocrStartTime: + description: | + Shows if this file has been OCRed by us. Start time of OCR + Process + format: date-time + type: string + numberOfPagesToOCR: + description: Number of pages to be OCRed by us + format: int32 + type: integer + numberOfOCRedPages: + description: Number of pages already OCRed by us + format: int32 + type: integer + ocrEndTime: + description: Shows if this file has been OCRed by us. End time of OCR Process + format: date-time + type: string + hasAnnotationComments: + description: Shows if this file has comments on annotations. + type: boolean + uploader: + description: The ID of the user who uploaded the file. + type: string + dictionaryVersion: + description: Shows which dictionary versions was used during the analysis. + format: int64 + type: integer + rulesVersion: + description: Shows which rules versions was used during the analysis. + format: int64 + type: integer + legalBasisVersion: + description: Shows which legal basis versions was used during the analysis. + format: int64 + type: integer + excluded: + description: Shows if the file was excluded from analysis. + type: boolean + lastProcessed: + description: Shows the last date of a successful analysis. + format: date-time + type: string + lastLayoutProcessed: + description: Shows the last date of a layout parsing. + format: date-time + type: string + approvalDate: + description: Shows the date of approval, if approved. + format: date-time + type: string + lastUploaded: + description: Shows last date the document was uploaded. + format: date-time + type: string + analysisDuration: + description: Shows how long the last analysis took + format: int64 + type: integer + fileAttributes: + $ref: '#/components/schemas/FileAttributes' + dossierDictionaryVersion: + description: | + Shows which dossier dictionary versions was used during the + analysis. + format: int64 + type: integer + analysisRequired: + description: Shows if the file requires reanalysis. + type: boolean + excludedPages: + description: Set of excluded pages for this file. + items: + description: Set of excluded pages for this file. + format: int32 + type: integer + type: array + uniqueItems: true + softDeletedTime: + description: Shows if the file is soft deleted. + format: date-time + type: string + lastFileAttributeChange: + description: Date and time when the files attributes was last updated. + format: date-time + type: string + hasSuggestions: + description: Shows if there are any Suggestions in this file. + type: boolean + excludedFromAutomaticAnalysis: + description: Shows if the file is excluded from automatic analysis. + type: boolean + redactionModificationDate: + description: Shows the last redaction modification date of this file. + format: date-time + type: string + fileManipulationDate: + description: Shows the date of the last manipulation of this file. + format: date-time + type: string + lastManualChangeDate: + description: | + Shows the date of the last manual change of an annotation of + this file. + format: date-time + type: string + hasHighlights: + description: | + Shows if there are highlights to remove or convert for this + file. + type: boolean + fileSize: + description: Size of the optimized, internally stored file. + format: int64 + type: integer + analysisVersion: + description: Analysis Version. + format: int32 + type: integer + lastIndexed: + description: Last time the file was indexed in ES. + format: date-time + type: string + fileErrorInfo: + $ref: '#/components/schemas/FileErrorInfo' + lastOCRTime: + description: Shows if this file has been OCRed by us. Last Time of OCR. + format: date-time + type: string + example: + hasRedactions: true + added: 2000-01-23T04:56:07.000+00:00 + workflowStatus: NEW + hasAnnotationComments: true + rulesVersion: 2 + excluded: true + lastUpdated: 2000-01-23T04:56:07.000+00:00 + lastManualChangeDate: 2000-01-23T04:56:07.000+00:00 + lastProcessed: 2000-01-23T04:56:07.000+00:00 + excludedFromAutomaticAnalysis: true + dictionaryVersion: 5 + dossierArchived: true + hasRequests: true + lastFileAttributeChange: 2000-01-23T04:56:07.000+00:00 + id: a7f0303d-a33c-4f2e-bd7a-a2adc1b8f92b + analysisDuration: 9 + hasHighlights: true + dossierStatusId: dossierStatusId + fileErrorInfo: + service: service + cause: cause + queue: queue + timestamp: 2000-01-23T04:56:07.000+00:00 + processingStatus: ANALYSE + numberOfAnalyses: 6 + filename: filename + fileAttributes: + myFileAttribute: This is a file attribute value + yetAnotherFileAttribute: This is yet another file attribute value + numericValuesNeedToBeStrings: "1234" + lastOCRTime: 2000-01-23T04:56:07.000+00:00 + legalBasisVersion: 7 + excludedPages: + - 2 + - 2 + redactionModificationDate: 2000-01-23T04:56:07.000+00:00 + fileSize: 4 + fileManipulationDate: 2000-01-23T04:56:07.000+00:00 + dossierId: dossierId + lastUploaded: 2000-01-23T04:56:07.000+00:00 + assignee: assignee + analysisRequired: true + approvalDate: 2000-01-23T04:56:07.000+00:00 + numberOfPagesToOCR: 1 + ocrEndTime: 2000-01-23T04:56:07.000+00:00 + hasHints: true + softDeletedTime: 2000-01-23T04:56:07.000+00:00 + numberOfPages: 0 + uploader: uploader + lastReviewer: lastReviewer + lastIndexed: 2000-01-23T04:56:07.000+00:00 + numberOfOCRedPages: 5 + analysisVersion: 7 + lastLayoutProcessed: 2000-01-23T04:56:07.000+00:00 + lastApprover: lastApprover + ocrStartTime: 2000-01-23T04:56:07.000+00:00 + dossierDictionaryVersion: 3 + dossierTemplateId: dossierTemplateId + hasImages: true + hasUpdates: true + hasSuggestions: true + FileStatusList: + type: object + description: Represents a list detailing the status of a bunch of files. + properties: + files: + type: array + description: An array of status details for each individual file. + items: + $ref: '#/components/schemas/FileStatus' + example: + files: + - hasRedactions: true + added: 2000-01-23T04:56:07.000+00:00 + workflowStatus: NEW + hasAnnotationComments: true + rulesVersion: 2 + excluded: true + lastUpdated: 2000-01-23T04:56:07.000+00:00 + lastManualChangeDate: 2000-01-23T04:56:07.000+00:00 + lastProcessed: 2000-01-23T04:56:07.000+00:00 + excludedFromAutomaticAnalysis: true + dictionaryVersion: 5 + dossierArchived: true + hasRequests: true + lastFileAttributeChange: 2000-01-23T04:56:07.000+00:00 + id: id + analysisDuration: 9 + hasHighlights: true + dossierStatusId: dossierStatusId + fileErrorInfo: + service: service + cause: cause + queue: queue + timestamp: 2000-01-23T04:56:07.000+00:00 + processingStatus: ANALYSE + numberOfAnalyses: 6 + filename: filename + fileAttributes: + myFileAttribute: This is a file attribute value + yetAnotherFileAttribute: This is yet another file attribute value + numericValuesNeedToBeStrings: "1234" + lastOCRTime: 2000-01-23T04:56:07.000+00:00 + legalBasisVersion: 7 + excludedPages: + - 2 + - 2 + redactionModificationDate: 2000-01-23T04:56:07.000+00:00 + fileSize: 4 + fileManipulationDate: 2000-01-23T04:56:07.000+00:00 + dossierId: 15849e05-5414-498c-b48b-47afa3fd74da + lastUploaded: 2000-01-23T04:56:07.000+00:00 + assignee: assignee + fileId: 4d2334def5fced0003888e47cbc270f7 + analysisRequired: true + approvalDate: 2000-01-23T04:56:07.000+00:00 + numberOfPagesToOCR: 1 + ocrEndTime: 2000-01-23T04:56:07.000+00:00 + hasHints: true + softDeletedTime: 2000-01-23T04:56:07.000+00:00 + numberOfPages: 0 + uploader: uploader + lastReviewer: lastReviewer + lastIndexed: 2000-01-23T04:56:07.000+00:00 + numberOfOCRedPages: 5 + analysisVersion: 7 + lastLayoutProcessed: 2000-01-23T04:56:07.000+00:00 + lastApprover: lastApprover + ocrStartTime: 2000-01-23T04:56:07.000+00:00 + dossierDictionaryVersion: 3 + dossierTemplateId: dossierTemplateId + hasImages: true + hasUpdates: true + hasSuggestions: true + - hasRedactions: true + added: 2000-01-23T04:56:07.000+00:00 + workflowStatus: NEW + hasAnnotationComments: true + rulesVersion: 2 + excluded: true + lastUpdated: 2000-01-23T04:56:07.000+00:00 + lastManualChangeDate: 2000-01-23T04:56:07.000+00:00 + lastProcessed: 2000-01-23T04:56:07.000+00:00 + excludedFromAutomaticAnalysis: true + dictionaryVersion: 5 + dossierArchived: true + hasRequests: true + lastFileAttributeChange: 2000-01-23T04:56:07.000+00:00 + id: id + analysisDuration: 9 + hasHighlights: true + dossierStatusId: dossierStatusId + fileErrorInfo: + service: service + cause: cause + queue: queue + timestamp: 2000-01-23T04:56:07.000+00:00 + processingStatus: ANALYSE + numberOfAnalyses: 6 + filename: filename + fileAttributes: + myFileAttribute: This is a file attribute value + yetAnotherFileAttribute: This is yet another file attribute value + numericValuesNeedToBeStrings: "1234" + lastOCRTime: 2000-01-23T04:56:07.000+00:00 + legalBasisVersion: 7 + excludedPages: + - 2 + - 2 + redactionModificationDate: 2000-01-23T04:56:07.000+00:00 + fileSize: 4 + fileManipulationDate: 2000-01-23T04:56:07.000+00:00 + dossierId: dossierId + lastUploaded: 2000-01-23T04:56:07.000+00:00 + assignee: assignee + fileId: 1fdbd888b39059c8cf171df26f62f8a5 + analysisRequired: true + approvalDate: 2000-01-23T04:56:07.000+00:00 + numberOfPagesToOCR: 1 + ocrEndTime: 2000-01-23T04:56:07.000+00:00 + hasHints: true + softDeletedTime: 2000-01-23T04:56:07.000+00:00 + numberOfPages: 0 + uploader: uploader + lastReviewer: lastReviewer + lastIndexed: 2000-01-23T04:56:07.000+00:00 + numberOfOCRedPages: 5 + analysisVersion: 7 + lastLayoutProcessed: 2000-01-23T04:56:07.000+00:00 + lastApprover: lastApprover + ocrStartTime: 2000-01-23T04:56:07.000+00:00 + dossierDictionaryVersion: 3 + dossierTemplateId: dossierTemplateId + hasImages: true + hasUpdates: true + hasSuggestions: true + FileUploadResult: + description: Object containing information about a successfully uploaded file. + example: + fileIds: + - fileIds + - fileIds + processedFileIds: + - processedFileIds + - processedFileIds + processedAttributes: + - processedAttributes + - processedAttributes + properties: + fileIds: + description: List of fileIds generated for uploaded file(s). + items: + description: List of fileIds generated for uploaded file(s). + type: string + type: array + processedAttributes: + description: | + List processed file attributes, in case the upload contained + a CSV. + items: + description: | + List processed file attributes, in case the upload contained + a CSV. + type: string + type: array + processedFileIds: + description: List processed fileIds, in case the upload contained a CSV. + items: + description: List processed fileIds, in case the upload contained a CSV. + type: string + type: array + type: object + RuleValidationMessage: + description: Object containing information about an uploaded rules file. + example: + line: 123 + column: 45 + message: "Unable to Analyse Expression ..." + properties: + line: + description: The line number where the error or warning occurs. + format: int32 + type: integer + column: + description: The column number where the error or warning occurs. + format: int32 + type: integer + message: + description: The error or warning message that describes the details. + type: string + type: object + RuleValidation: + description: | + Information about the uploaded rules file. The `error` field is empty if there were no validation errors in the uploaded rules file. + example: + errors: + - line: 123 + column: 45 + message: "Unable to Analyse Expression ..." + - line: 234 + column: 5 + message: "Invalid rule syntax ..." + properties: + errors: + description: List of errors found in the uploaded rules file. + items: + $ref: '#/components/schemas/RuleValidationMessage' + type: array + type: object + LicenseReport: + type: object + description: A comprehensive report of licensing metrics and usage statistics. + properties: + startDate: + type: string + format: date-time + description: The starting date of the report. + endDate: + type: string + format: date-time + description: The ending date of the report. + numberOfAnalyzedFiles: + type: integer + format: int32 + description: | + The count of files that have been analyzed in the requested period. The counter is + increased only once for each file, regardless of the number of analysis. + numberOfAnalyzedPages: + type: integer + format: int32 + description: | + The count of pages that have been analyzed in the requested period. The counter is + increased only once for each file, regardless of the number of analysis. + analyzedFilesBytes: + type: integer + format: int64 + description: | + The size in bytes of the files that have been analyzed in the requested period. + The counter is increased only once for each file, regardless of the number of analysis. + totalFilesUploadedBytes: + type: integer + format: int64 + description: The total size in bytes of all present files at the end of the period. + activeFilesUploadedBytes: + type: integer + format: int64 + description: The size in bytes of all active files at the end of the period. + trashFilesUploadedBytes: + type: integer + format: int64 + description: The size in bytes of all soft-deleted files at the end of the period. + archivedFilesUploadedBytes: + type: integer + format: int64 + description: The size in bytes of all archived files at the end of the period. + numberOfOcrFiles: + type: integer + format: int32 + description: | + The count of files that have undergone OCR (Optical Character Recognition) in the + requested period. + numberOfOcrPages: + type: integer + format: int32 + description: The count of pages that have undergone OCR in the requested period. + numberOfDossiers: + type: integer + format: int32 + description: The total number of present dossiers at the end of the period. + monthlyData: + description: A list of data metrics categorized on a monthly basis. + items: + $ref: '#/components/schemas/MonthlyReportData' + type: array + example: + startDate: 2000-01-01T00:00:00.000+00:00 + endDate: 2001-01-01T00:00:00.000+00:00 + numberOfAnalyzedFiles: 5 + numberOfAnalyzedPages: 9 + analyzedFilesBytes: 30000 + totalFilesUploadedBytes: 30000 + activeFilesUploadedBytes: 20000 + archivedFilesUploadedBytes: 5000 + trashFilesUploadedBytes: 5000 + numberOfOcrFiles: 2 + numberOfOcrPages: 2 + numberOfDossiers: 1 + monthlyData: + - startDate: 2000-01-01T00:00:00.000+00:00 + endDate: 2000-02-01T00:00:00.000+00:00 + numberOfAnalyzedPages: 7 + analyzedFilesBytes: 25000 + totalFilesUploadedBytes: 25000 + activeFilesUploadedBytes: 22000 + archivedFilesUploadedBytes: 0 + trashFilesUploadedBytes: 3000 + numberOfOcrPages: 1 + - startDate: 2000-02-01T00:00:00.000+00:00 + endDate: 2000-03-01T00:00:00.000+00:00 + numberOfAnalyzedPages: 2 + analyzedFilesBytes: 5000 + totalFilesUploadedBytes: 30000 + activeFilesUploadedBytes: 20000 + archivedFilesUploadedBytes: 5000 + trashFilesUploadedBytes: 5000 + numberOfOcrPages: 1 + LicenseReportRequest: + type: object + description: Request object to retrieve a license report for a given date range. + properties: + startDate: + type: string + format: date-time + description: The start date for the requested report. + endDate: + type: string + format: date-time + description: The end date for the requested report. + example: + startDate: 2000-01-01T00:00:00.000+00:00 + endDate: 2001-01-01T00:00:00.000+00:00 + MonthlyReportData: + type: object + description: Detailed metrics regarding license usage for a given month. + properties: + startDate: + type: string + format: date-time + description: The starting date of the respective month. + endDate: + type: string + format: date-time + description: The ending date of the respective month. + numberOfAnalyzedPages: + type: integer + format: int32 + description: | + The count of pages that have been analyzed in the respective month. The counter is + increased only once for each file, regardless of the number of analysis. + analyzedFilesBytes: + type: integer + format: int64 + description: | + The size in bytes of the files that have been analyzed in the respective month. + The counter is increased only once for each file, regardless of the number of analysis. + totalFilesUploadedBytes: + type: integer + format: int64 + description: The total size in bytes of all present files at the end of the respective month. + activeFilesUploadedBytes: + type: integer + format: int64 + description: The size in bytes of all active files at the end of the respective month. + trashFilesUploadedBytes: + type: integer + format: int64 + description: The size in bytes of all soft-deleted files at the end of the respective month. + archivedFilesUploadedBytes: + type: integer + format: int64 + description: The size in bytes of all archived files at the end of the respective month. + numberOfOcrPages: + type: integer + format: int32 + description: The count of pages that have undergone OCR in the requested respective month. + example: + startDate: 2000-01-01T00:00:00.000+00:00 + endDate: 2000-02-01T00:00:00.000+00:00 + numberOfAnalyzedPages: 7 + analyzedFilesBytes: 25000 + totalFilesUploadedBytes: 25000 + activeFilesUploadedBytes: 22000 + archivedFilesUploadedBytes: 0 + trashFilesUploadedBytes: 3000 + numberOfOcrPages: 1 + UploadRequest: + type: object + description: Request object to upload a file. + properties: + file: + type: string + format: binary + description: The binary content of the file to be uploaded. + required: + - file + securitySchemes: + FF-OAUTH: + flows: + authorizationCode: + authorizationUrl: /auth/realms/redaction/protocol/openid-connect/auth + scopes: { } + tokenUrl: /auth/realms/redaction/protocol/openid-connect/token + type: oauth2