---
title: "Default web service: DocuWare Platform API"
slug: "default-web-service-docuware-platform-api"
updated: 2026-06-08T12:26:15Z
published: 2026-06-08T12:26:15Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://knowledgecenter.docuware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Default web service: DocuWare Platform API

Access your file cabinets and documents in the file cabinets via the integrated default web service DocuWare Platform API. The list below shows the available endpoints for the default REST web service "DocuWare Platform API".

> [!NOTE]
> Information: Some endpoints can execute multiple operations
> 
> For example, the endpoint "*documentAnnotations*" places a stamp on a free or a fixed position or adds a text annotation. The path/endpoint is the same for these three functions with “*documentAnnotations*”. The difference is the HTTP body. However, DocuWare can only automatically pre-populate one HTTP body. For the “*documentAnnotations*” example, the HTTP body for the “Add stamp to an automatically defined position” function is filled in by default. If you want to use a different function with “*documentAnnotations*”, you have to manually replace and adjust the HTTP body. The corresponding templates can be found at the bottom of the [list of endpoints](/help/docs/default-web-service-docuware-platform-api#list-of-endpoints).

The tag "Default" in the [list of endpoints](/help/docs/default-web-service-docuware-platform-api#list-of-endpoints) indicates which HTTP Body is pre-filled automatically.

Check this overview to find the operations that share the same path/endpoint:

- **documentAnnotations**

POST /FileCabinets/{TrayId/FileCabinetId}/Operations/ProcessDocumentAction?docId={DocId}
  - Add stamp to an automatically defined position - default
  - Add stamp to a fixed position
  - Add text annotation to a fixed position
- **processDocumentAction**

PUT /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation
  - Merge layers - default
  - Append a document
- **userRoles**

PUT /Organization/UserRoles?UserId={UserId}
  - Add user to a role - default
  - Remove user from a role
- **userGroups**

PUT /Organization/UserGroups?UserId={UserId}
  - Add user to a group - default
  - Remove user from a role

To pass the ID/GUID of a user, simply write the username into a global variable of type "User" and pass the variable in the HTTP request. The system will automatically provide the appropriate GUID.

### List of endpoints

****Get total amount of documents in a file cabinet or document tray****

- **Description**: DialogId (optional): The identifier of the used search dialog. FieldName (optional): The name of the field whose values are grouped and counted.
- **Default**: yes
- **Operation**: countResult
- **Command**: POST
- **Route/Path**: /DocuWare/Platform/FileCabinets/ {TrayId/FileCabinetId}/Query/CountExpression?dialogId={DialogId}&fieldName= {FieldName}

****Search by dialog****

- **Description**: DialogId (optional): The identifier of the used search dialog.
- **Default**: yes
- **Operation**: dialogExpression
- **Command**: POST
- **Route/Path**: /DocuWare/Platform/FileCabinets/ {TrayId/FileCabinetId}/Query/CountExpression?dialogId={DialogId}&fieldName= {FieldName}
- **HTTP body (sample):**

```json
{ "Condition":[ {"DBName":"COMPANY", "Value":["Peter's Engineering"]},{"DBName":"CONTACT", "Value":["EMPTY()"]},{"DBName":"DocuWareFulltext", "Value":["Solar Panels"]}], "Operation":"And"}
```

****Create a new database entry in a document tray or a file cabinet****

- **Default**: yes
- **Operation**: documents
- **Command**: POST
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Documents
- **HTTP body (sample):**

```json
{ "Fields": [ { "FieldName": "COMPANY", "Item": "Peter's Engineering" }, { "FieldName": "CONTACT", "Item": "Peter Sanders" }, { "FieldName": "DOCUMENT_DATE", "Item": "2020-01-01" }, { "FieldName": "COST_CENTER", "Item": { "$type": "DocumentIndexFieldKeywords", "Keyword": [ "A", "B", "C" ] } } ] }
```

****Get information of a document****

- **Default**: yes
- **Operation**: document
- **Command**: GET
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}

****Delete a document****

- **Default**: yes
- **Operation**: documentDelete
- **Command**: DELETE
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}

****Delete a section of a document****

- **Description**: The only section of a document is deleted it will automatically be converted to a database entry.
- **Default**: yes
- **Operation**: sectionDelete
- **Command**: DELETE
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Sections/{SectionId}

****Add a stamp at an automatically defined position****

- **Description**: Add stamp on best position.
- **Default**: yes
- **Operation**: documentAnnotations
- **Command**: POST
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation
- **HTTP-body (sample):**

```json
{ "Annotations": [ { "PageNumber": 0, "SectionNumber": 0, "AnnotationsPlacement": { "Items": [ { "$type": "StampPlacement", "StampId": "73d54f34-1b80-4b43-81ec-f0d31176d990", "Layer": 1, "Field": [ { "Name": "<#1>", "TypedValue": { "Item": "*Test007*" }, "Value": "Jenkins" }, { "Name": "<#2>", "TypedValue": { "Item": "*Test007*" }, "Value": "Approved" } ], "Password": null } ] } } ] }
```

****Add a stamp on fixed position****

- **Operation**: documentAnnotations
- **Command**: POST
- **Route/Path**: FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation
- **HTTP body (sample):**

```json
{ "Annotations": [ { "PageNumber": 0, "SectionNumber": 0, "AnnotationsPlacement": { "Items": [ { "$type": "StampPlacement", "Location": { "X": "100", "Y": "100" }, "StampId": "6ab67774-074d-4d93-99c5-5bc46262b84c", "Layer": 1, "Field": [ { "Name": "<#1>", "TypedValue": { "Item": "September" }, "Value": "Sep." } ], "Password": null } ] } } ] }
```

****Add text annotation****

- **Operation**: documentAnnotations
- **Command**: POST
- **Route/Path**: FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation
- **HTTP body (sample):**

```json
{ "Annotations": [ { "PageNumber": 0, "SectionNumber": 0, "AnnotationsPlacement": { "Items": [ { "$type": "Annotation", "Layer": [ { "Id": "1", "Items": [ { "$type": "TextEntry", "Font": { "FontName": "Lucida Console", "Bold": true, "Italic": true, "Underlined": false, "StrikeThrough": false, "FontSize": 200, "Spacing": 0 }, "Value": "Test annotation", "Location": { "Left": 100, "Top": 100, "Width": 1500, "Height": 500 }, "Color": "Black", "Rotation": 0, "Transparent": false, "StrokeWidth": 50 } ] } ] } ] } } ] }
```

****Transfer a document****

- **Description**: Transfer document from a source file cabinet or document tray to the specified file cabinet or document tray

Content type has to be set to application/vnd.docuware.platform.documentstransferinfo+json
- **Default**: yes
- **Operation**: transfer
- **Command**: POST
- **Route/Path**: /FileCabinets/ {TrayId/FileCabinetId} /Task/Transfer
- **HTTP body (sample):**

```json
{ "SourceFileCabinetId": "ae156510-ffa8-48b1-a3ec-baec3180669c", "Documents": [ { "Id": 123456, "Fields": null } ], "KeepSource": true, "FillIntellix": false,"UseDefaultDialog": true}
```

****Replace a file of a document****

- **Description**: Replace the file of a document with the document within the workflow.
- **Default**: yes
- **Operation**: sectionData
- **Command**: POST
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Sections/{SectionId}/Data

****Append a new file****

- **Description**: Append a the current document to another document in a file cabinet or document tray

Document can be appened in original format or as PDF without annotations or stamps.

If the target is a DB entry it will automatically be converted to a document.
- **Default**: yes
- **Operation**: sections
- **Command**: POST
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Sections?DocId={DocId}

****Unclip a document****

- **Description**: Automate separation of files, for example when clipped documents are stored in the file cabinet, they can be transferred to the document tray, unclipped there, and stored back to the file cabinet again.
  - In the Request route, specifiy the tray GUID
  - In the Request queries, add the Document ID
- **Default**: yes
- **Operation**: unclipDocument
- **Command**: POST
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Operations/ContentDivide?docId={docId}

****Merge layers****

- **Description**: Merge the annotation layers with the document. This will create new PDF and replace the old one.
- **Default**: yes
- **Operation**: processDocumentAction
- **Command**: PUT
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Operations/ProcessDocumentAction?docId={DocId}
- **HTTP body (sample):**

```json
{ "DocumentAction": "MergeAnnotations","DocumentActionParameters":{"$type":"MergeAnnotationsParameters","SectionNumber":0}}
```

****Append a document****

- **Description**: DialogId (optional): The identifier of the used search dialog. FieldName (optional): The name of the field whose values are grouped and counted.
- **Operation**: processDocumentAction
- **Command**: PUT
- **Route/Path**: /FileCabinets/{TrayId/FileCabinetId}/Operations/ProcessDocumentAction?docId={DocId}
- **HTTP body (sample):**

```json
{ "DocumentAction": "Append", "DocumentActionParameters": { "$type": "AppendActionParameters", "RemoveSourceDocuments": false, "DocumentsInFront": [ ], "DocumentsAtBack": [ { "SourceCabinetId": "ae156510-ffa8-48b1-a3ec-baec3180669c", "Documents": [ 123456 ] } ] } }
```

****Create user****

- **Description**: Content type has to be set to application/vnd.docuware.platform.createorganizationuser+json
- **Default**: yes
- **Operation**: createUser
- **Command**: POST
- **Route/Path**: /Organization/UserInfo
- **HTTP body (sample):**

```json
{ "EMail": "firstname.lastname@domain.com", "Name": "MyUserName", "DBName": "MYUSERNA", "Password": "eLK%4s*Z", "NetworkID": "Domain\\MyUserName" }
```

****Modify user properties****

- **Default**: yes
- **Operation**: modifyUser
- **Command**: PATCH
- **Route/Path**: /Organization/UserInfo

****Get all users of the organization****

- **Default**: yes
- **Operation**: users
- **Command**: GET
- **Route/Path**: /Organization/Users?Active={true|false}&Name={UserName}

****Get all users of a group****

- **Description**: GroupID (required): The identifier of the group.
- **Default**: yes
- **Operation**: usersByGroup
- **Command**: GET
- **Route/Path**: /Organization/GroupUsers?groupId={GroupId}

****Get all users of a role****

- **Description**: RoleID (required): The identifier of the group. IncludeGroupUsers (optional): Boolean - default: 'false'
- **Default**: yes
- **Operation**: usersByRole
- **Command**: GET
- **Route/Path**: /Organization/UserRoles?UserId={UserId}&Active={true|false}&Name={RoleName}&Type={Standard|Default|Administrator}

****Get information of a user****

- **Description**: Gt the properties of a specific user such as active state or out of office state.

UserID (required):

The identifier of the user.
- **Default**: yes
- **Operation**: userById
- **Command**: GET
- **Route/Path**: /Organization/UserByID?userId={UserId}

****Get all roles of a user****

- **Description**: UserID (required): The identifier of the user.

Active (optional): Boolean - default: empty

Name (optional): The name of the role

Type (optional): {Standard|Default|Administrator}
- **Default**: yes
- **Operation**: userRoles
- **Command**: GET
- **Route/Path**: /Organization/UserRoles?UserId={UserId}

****Add a user to role****

- **Description**: UserID (required): The identifier of the user.
- **Default**: yes
- **Operation**: userRoles
- **Command**: PUT
- **Route/Path**: Organization/UserRoles?UserId={UserId}
- **HTTP body (sample):**

```json
{ "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Add" }
```

****Remove user from role****

- **Description**: UserID (required): The identifier of the user.
- **Operation**: userRoles
- **Command**: PUT
- **Route/Path**: Organization/UserRoles?UserId={UserId}
- **HTTP body (sample):**

```json
{ "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Remove" }
```

****Get all groups of a user****

- **Description**: UserID (required): The identifier of the user.

Active (optional): Boolean - default: empty

Name (optional): The name of the group
- **Default**: yes
- **Operation**: userGroups
- **Command**: GET
- **Route/Path**: /Organization/UserGroups?UserId={UserId}

****Add a user to a group****

- **Description**: UserID (required): The identifier of the user.
- **Default**: yes
- **Operation**: userGroups
- **Command**: PUT
- **Route/Path**: /Organization/UserGroups?UserId={UserId}
- **HTTP body (sample):**

```json
{ "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Add" }
```

****Remove user from a group****

- **Description**: UserID (required): The identifier of the user.
- **Default**: yes
- **Operation**: userGroups
- **Command**: PUT
- **Route/Path**: /Organization/UserGroups?UserId={UserId}
- **HTTP body (sample):**

```json
{ "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Remove" }
```

****Get all roles from the organization****

- **Description**: Active (optional): Boolean - default: empty

Name (optional): The name of the role

Type (optional): {Standard|Default|Administrator}
- **Operation**: roles
- **Command**: GET
- **Route/Path**: /Organization/Roles? Active={true|false}&Name={RoleName}&Type={Standard|Default|Administrator}

****Get information of a role****

- **Description**: Get the information of a role such as active state

RoleID (required): The identifier of the role.
- **Default**: yes
- **Operation**: role
- **Command**: GET
- **Route/Path**: /Organization/Role?roleId={RoleId}

****Get all groups from the organization****

- **Description**: Active (optional): Boolean - default: empty

Name (optional): the name of the group
- **Default**: yes
- **Operation**: groups
- **Command**: GET
- **Route/Path**: /Organization/Groups?&Active={true|false}&Name={GroupName}

****Get information of a group****

- **Description**: Get the information of a group such as active state.

GroupID (required): The identifier of the group.
- **Default**: yes
- **Operation**: group
- **Command**: GET
- **Route/Path**: /Organization/Group?groupId={GroupId}

****Create a new group****

- **Description**: Automate the creation of DocuWare groups, for example when new project files are stored, a group with the project name can be created and an index value profile can be assigned to this group. Properties required:
  - id
  - name
  - active
- **Default**: yes
- **Operation**: createGroup
- **Command**: POST
- **Route/Path**: /Organization/Groups
- **HTTP body (sample):**

```json
{ "Ids": [ "group-1234" ], "name": "Accounting Team", "Active": "true" }
```

### Sample use case for setting a stamp with endpoint "documentAnnotations"

After an invoice has been processed in the accounting software, you want to automatically set a "Paid" stamp on the invoice in DocuWare.

To do this, create an Autoindex job which changes the index entry of the invoice to "paid". The change of the index entry of the invoice triggers a workflow, whose web service activity automatically puts the "Paid" stamp on the invoice document.

Note that the "Paid" stamp must be configured and assigned to the user which is specified for the workflow to run automatic activities.

## Supported versions: DocuWare Cloud + 7.14 + 7.13 + 7.12 + 7.11 + 7.10
