Documents
The document management in InLoox comprises three entities: Document, DocumentFolder, and DocumentFolderStructure. Via the OData API you can upload documents, create links, manage folder structures, and define automatic folder rules.
Entity Overview
| Entity | Description |
|---|---|
| Document | Individual document (file, hyperlink, or file link) |
| DocumentFolder | Folder within the project document structure |
| DocumentFolderStructure | Automatic folder structure rules |
Documents are always associated with a project. Use ProjectId when filtering to retrieve only documents of a specific project.
Document
A document represents a file, a hyperlink, or a file link stored in a project. Documents support metadata, notes, favorites, and relationships to other entities.
InLoox supports different storage types (StoreType): InLoox cloud storage, SharePoint online, and (exclusively in InLoox Self-Hosted) local file systems. The value of StoreType determines how the document is physically stored.
Data Model
| Property | Type | Description |
|---|---|---|
DocumentId | Guid (UUID) | Unique identifier of the document (primary key). |
FileName | string? | File name. |
ProjectId | Guid? | Associated project. |
DocumentFolderId | Guid | Associated folder. |
DescriptionHTML | string? | Description as HTML. |
OutlookPreviewText | string? | Preview text from Outlook. |
IsInternetLink | boolean | Indicates whether the document is a hyperlink. |
IsFileLink | boolean | Indicates whether the document is a file link. |
IsStandardFile | boolean | Indicates whether it is a standard file. |
StoreType | int32 | Storage type. Values: 0 = Not defined, 1 = File server, 2 = SharePoint online, 3 = InLoox document storage. |
PhysicalId | string? | Physical ID in the storage system. |
IsOrphaned | boolean | Indicates whether the document is orphaned. |
SourceFolder | string? | Source folder. |
DocumentFolderPath | string? | Full folder path. |
CreatedByContactId | Guid? | Creator of the document. |
FileType | string? | File type (extension). |
State | string? | Document state. |
UpdatedAt | DateTimeOffset? | Timestamp of the last update. |
CreatedAt | DateTimeOffset? | Creation date. |
Endpoints
CRUD Operations
List all documents across all projects
/odata/DocumentSupports OData query parameters.
Get a single document
/odata/Document({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentId. |
Create a new document
/odata/Document| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiDocument> | ✅ | JSON object with the document properties. |
Update a document
/odata/Document({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentId. |
Body | Delta<ApiDocument> | ✅ | JSON object with the fields to update. |
Delete a document
/odata/Document({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentId. |
Deleting a document cannot be undone.
Comments
Add a comment to a document
/odata/Document({key})/AddNote| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentId. |
Body | object | ✅ | JSON object with the following fields: htmlText (string, required) — HTML-formatted comment content. notificationContactIds (Guid[], required) — Contact IDs to notify (can be empty []). |
Delete a comment from a document
/odata/Document/DeleteNote(noteRelationId={noteRelationId})| Parameter | Type | Required | Description |
|---|---|---|---|
noteRelationId | Guid | ✅ | The ID of the comment relation. |
Deleting a comment cannot be undone.
Links & Objects
Get all documents for a specific object
/odata/Document({key})/GetDocumentsForObject()| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The object ID. |
Get linked items of a document
/odata/Document({key})/GetRelatedItems()| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentId. |
Favorites
Toggle the favorite status of a document
/odata/Document({key})/ToggleFavorite(isFavorite={isFavorite})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentId. |
isFavorite | boolean | ✅ | true to mark as favorite, false to remove. |
Links & Hyperlinks
Create a file link
/odata/Document/AddFileLink| Parameter | Type | Required | Description |
|---|---|---|---|
Body | object | ✅ | JSON object with the following fields: projectId (Guid, required) — The project to add the file link to. linkAddress (string, required) — The URL/address of the linked file. parentFolderId (Guid?, optional) — Parent folder; if omitted, the link is created in the root folder. |
Create a hyperlink (URL)
/odata/Document/AddHyperlink| Parameter | Type | Required | Description |
|---|---|---|---|
Body | object | ✅ | JSON object with the following fields: projectId (Guid, required) — The project to add the hyperlink to. linkAddress (string, required) — The URL of the hyperlink. parentFolderId (Guid?, optional) — Parent folder; if omitted, the hyperlink is created in the root folder. |
Update an existing file link or hyperlink (URL)
/odata/Document/ChangeFileLink| Parameter | Type | Required | Description |
|---|---|---|---|
Body | object | ✅ | JSON object with the following fields: documentId (Guid, required) — The existing document whose file link is to be updated. linkAddress (string, required) — The new URL/path for the file link. |
Special Functions
Get the maximum file upload size
/odata/Document/GetFileUploadSizeLimit()Get tracked documents of a project
/odata/Document/GetTrackedDocumentsForProject(projectId={projectId})| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | Guid | ✅ | The project ID. |
Check whether a document with a specific internet message ID exists in the project
/odata/Document/HasDocumentWithInternetMessageIdInProject(internetMessageId={internetMessageId},projectId={projectId})| Parameter | Type | Required | Description |
|---|---|---|---|
internetMessageId | string | ✅ | The internet message ID (from email header). |
projectId | Guid | ✅ | The project ID. |
Use HasDocumentWithInternetMessageIdInProject to check whether an email has already been saved in the project. Use GetTrackedDocumentsForProject to list all tracked email documents of a project.
DocumentFolder
Data Model
| Property | Type | Description |
|---|---|---|
DocumentFolderId | Guid (UUID) | Unique identifier of the folder. |
ParentDocumentFolderId | Guid? | Parent folder (null = root folder). |
FolderName | string? | Folder name. |
RelativePath | string? | Relative path of the folder. |
ProjectId | Guid? | Associated project. |
IsOrphaned | boolean | Indicates whether the folder is orphaned. |
CreatedDate | DateTimeOffset | Creation date. |
Endpoints
List all document folders
/odata/DocumentFolderGet a single folder
/odata/DocumentFolder({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentFolderId. |
Create a new folder
/odata/DocumentFolder| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiDocumentFolder> | ✅ | JSON object with the folder properties. |
Update a folder
/odata/DocumentFolder({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentFolderId. |
Body | Delta<ApiDocumentFolder> | ✅ | JSON object with the fields to update. |
Delete a folder
/odata/DocumentFolder({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentFolderId. |
Deleting a folder also removes all documents contained within it. This action cannot be undone.
DocumentFolderStructure
The DocumentFolderStructure entity defines automatic folder structure rules that are applied when creating new projects.
Data Model
| Property | Type | Description |
|---|---|---|
DocumentStructureId | Guid (UUID) | Unique identifier of the folder structure rule. |
FolderPath | string? | Folder path that is automatically created. |
RuleField | string? | Field on which the rule is based. |
RuleExpression | string? | Rule expression for automatic creation. |
Folder structure rules automate directory creation. When a project matches the defined RuleField and RuleExpression, the associated folder hierarchy is automatically created. These rules can be configured under Account Settings > Documents.
Endpoints
List all folder structure rules
/odata/DocumentFolderStructureGet a single folder structure rule by ID
/odata/DocumentFolderStructure({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentStructureId. |
Create a new folder structure rule
/odata/DocumentFolderStructure| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiDocumentFolderStructure> | ✅ | JSON object with the rule properties. |
Update a folder structure rule
/odata/DocumentFolderStructure({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentStructureId. |
Body | Delta<ApiDocumentFolderStructure> | ✅ | JSON object with the fields to update. |
Delete a folder structure rule
/odata/DocumentFolderStructure({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The DocumentStructureId. |
Deleting a folder structure rule cannot be undone.
OData Query Examples
All documents of a project
GET /odata/Document?$filter=ProjectId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
Get only hyperlinks
GET /odata/Document?$filter=IsInternetLink eq true
Filter documents by file type
GET /odata/Document?$filter=FileType eq '.pdf'
Folder structure of a project
GET /odata/DocumentFolder?$filter=ProjectId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'&$orderby=RelativePath
Create a hyperlink
POST /odata/Document/AddHyperlink
Content-Type: application/json
{
"Url": "https://example.com/specification",
"DisplayName": "Technical Specification",
"ProjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"DocumentFolderId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Create a new folder
POST /odata/DocumentFolder
Content-Type: application/json
{
"FolderName": "Contracts",
"ProjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ParentDocumentFolderId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}