This package was developed to give you a quick start to communicate with the DocuWare REST API. It is used to query the most common endpoints.
- 💡 What is DocuWare?
- 🛠 Requirements
- ⚙️ Installation
- 🏗 Usage
- Extending the connector (EXAMPLE)
- 🖼 Make encrypted URLs
- 🏋️ Document Index Fields DTO showcase
- 📦 Caching requests
- 💥 Exceptions explained
- ✨ Events
- 🔧 Configuration file
- 🚧 Testing
- 📝 Changelog
- ✏️ Contributing
- 🧑💻 Security Vulnerabilities
- 🙏 Credits
- 🎭 License
DocuWare provides cloud document management and workflow automation software that enables you to digitize, secure and work with business documents, then optimize the processes that power the core of your business.
Version Support
Version | PHP Version | Laravel Version | DocuWare Cloud Access |
---|---|---|---|
> v11.0 (alpha) | ^8.2 | ^11.* | ✅ |
> v4.0 | ^8.2 | ^11.* | ✅ |
> v3.0 | ^8.2 | ^10.* | ✅ |
> v2.0 | ^8.1 | ^9.* | ✅ |
> v1.2 | ^8.1 | ^9.* | ✅ |
< v1.2 | ^8.0 | ^8.* | ✅ |
Current Support
Group | Request | Supported | TODO |
---|---|---|---|
Authentication/OAuth | 1. Get Responsible Identity Service | ✅ | |
Authentication/OAuth | 2. Get Identity Service Configuration | ✅ | |
Authentication/OAuth | 3.a Request Token w/ Username & Password | ✅ | |
Authentication/OAuth | 3.b Request Token w/ a DocuWare Token | 🕣 | |
Authentication/OAuth | 3.c Request Token w/ Username & Password (Trusted User) | 🕣 | |
Authentication/OAuth | 3.d.1 Obtain Windows Authorization (On Premises Only) | 🕣 | |
Authentication/OAuth | 3.d.2 Request Token /w a Windows Account (On Premises Only) | 🕣 | |
General/Organisation | Get Login Token | ✅ | |
General/Organisation | Get Organization | ✅ | |
General/Organisation | Get All File Cabinets and Document Trays | ✅ | |
General/UserManagement | Get Users by ID | ✅ | |
General/UserManagement | Get Users of a Role | ✅ | |
General/UserManagement | Get Users of a Group | ✅ | |
General/UserManagement | Create User | ✅ | |
General/UserManagement | Update User | ✅ | |
General/UserManagement | Get Groups | ✅ | |
General/UserManagement | Get All Groups for a Specific User | ✅ | |
General/UserManagement | Add User to a Group | ✅ | |
General/UserManagement | Remove User from a Group | ✅ | |
General/UserManagement | Get Roles | ✅ | |
General/UserManagement | Get All Roles for a Specific User | ✅ | |
General/UserManagement | Add User to a Role | ✅ | |
General/UserManagement | Remove User from a Role | ✅ | |
FileCabinets/General | Get File Cabinet Information | ✅ | |
FileCabinets/General | Get Total Number of Documents | ✅ | |
FileCabinets/Dialogs | Get All Dialogs | ✅ | |
FileCabinets/Dialogs | Get a Specific Dialog | ✅ | |
FileCabinets/Dialogs | Get Dialogs of a Specific Type | ✅ | |
FileCabinets/Search | Get Documents from a File Cabinet | ✅ | |
FileCabinets/Search | Get a Specific Document From a File Cabinet | ✅ | |
FileCabinets/Search | Search for Documents in a Single File Cabinet | ✅ | |
FileCabinets/Search | Search for Documents in Multiple File Cabinets | ✅ | |
FileCabinets/CheckInCheckOut | Check-out & Download a Document | 🕣 | |
FileCabinets/CheckInCheckOut | Check-in a Document from the File System | 🕣 | |
FileCabinets/CheckInCheckOut | Undo Check-out | 🕣 | |
FileCabinets/SelectLists | Get Select Lists & Get Filtered Select Lists | ✅ | |
FileCabinets/Upload | Create Data Record | ✅ | |
FileCabinets/Upload | Append File(s) to a Data Record | ✅ | |
FileCabinets/Upload | Upload a Single File for a Data Record | ❌ | - |
FileCabinets/Upload | Create a Data Record & Upload File | ❌ | - |
FileCabinets/Upload | Create Data Record & Upload File Using Store Dialog | ❌ | - |
FileCabinets/Upload | Append a Single PDF to a Document | ❌ | - |
FileCabinets/Upload | Replace a PDF Document Section | ❌ | - |
FileCabinets/BatchIndexFieldsUpdate | Batch Update Index Fields By Id | ❌ | - |
FileCabinets/BatchIndexFieldsUpdate | Batch Update Index Fields By Search | ❌ | - |
FileCabinets/BatchIndexFieldsUpdate | Batch Append/Update Keyword Fields By Id | ❌ | - |
Documents/UpdateIndexValues | Update Index Values | ✅ | |
Documents/UpdateIndexValues | Update Table Field Values | ❌ | - ? |
Documents/ModifyDocuments | Transfer Document | ✅ | |
Documents/ModifyDocuments | Delete Document | ✅ | |
Documents/ClipUnclip&StapleUnstaple | Clip | ✅ | |
Documents/ClipUnclip&StapleUnstaple | Unclip | ✅ | |
Documents/ClipUnclip&StapleUnstaple | Staple | ✅ | |
Documents/ClipUnclip&StapleUnstaple | Unstaple | ✅ | |
Documents/AnnotationsStamps | AddStampWithPosition | 🕣 | |
Documents/AnnotationsStamps | AddStampWithBestPosition | 🕣 | |
Documents/AnnotationsStamps | AddTextAnnotation | 🕣 | |
Documents/AnnotationsStamps | AddRectEntryAnnotation | 🕣 | |
Documents/AnnotationsStamps | AddLineEntryAnnotation | 🕣 | |
Documents/AnnotationsStamps | AddPolyLineEntryAnnotation | ❌ | - |
Documents/AnnotationsStamps | DeleteAnnotation | ❌ | - |
Documents/AnnotationsStamps | UpdateTextAnnotation | 🕣 | |
Documents/AnnotationsStamps | Get Stamps | ❌ | - |
Documents/DocumentsTrashBin | Get Documents | ✅ | |
Documents/DocumentsTrashBin | Delete Documents | ✅ | |
Documents/DocumentsTrashBin | Restore Documents | ✅ | |
Documents/ApplicationProperties | Get Application Properties | ✅ | |
Documents/ApplicationProperties | Add Application Properties | ✅ | |
Documents/ApplicationProperties | Delete Application Properties | ✅ | |
Documents/ApplicationProperties | Update Application Properties | ✅ | |
Documents/Sections | Get All Sections from a Document | ✅ | |
Documents/Sections | Get a Specific Section | ✅ | |
Documents/Sections | Delete Section | ✅ | |
Documents/Sections/Textshot | Get Textshot for a Specific Section | ✅ | |
Documents/Download | Download Document | ✅ | |
Documents/Download | Download Section | ✅ | |
Documents/Download | Download Thumbnail | ✅ | |
Workflow | Get Document Workflow History | ✅ | |
Workflow | Get Document Workflow History Steps | ✅ |
You can install the package via composer:
composer require codebar-ag/laravel-docuware
Add the following environment variables to your .env
file:
DOCUWARE_URL=https://domain.docuware.cloud
DOCUWARE_USERNAME=user@domain.test
DOCUWARE_PASSWORD=password
DOCUWARE_PASSPHRASE="passphrase"
With the passphrase we are able to encrypt the URLs.
# ❌ Passphrase contains a backslash and is not escaped:
DOCUWARE_PASSPHRASE="a#bcd>2~C1'abc\#"
# ✅ We need to escape the backslash with another backslash:
DOCUWARE_PASSPHRASE="a#bcd>2~C1'abc\\#"
This package automatically handles the generation of OAuth token for you and stores them in cache.
use CodebarAg\DocuWare\Connectors\DocuWareConnector;
use CodebarAg\DocuWare\DTO\Config\ConfigWithCredentials;
$connector = new DocuWareConnector(
configuration: new ConfigWithCredentials(
username: 'username',
password: 'password',
)
);
use CodebarAg\DocuWare\Connectors\DocuWareConnector;
use CodebarAg\DocuWare\DTO\Config\ConfigWithCredentialsTrustedUser;
$connector = new DocuWareConnector(
configuration: new ConfigWithCredentialsTrustedUser(
username: 'username',
password: 'password',
impersonatedUsername: 'impersonatedUsername',
)
);
We understand it may be repetitive to pass the configuration every time you create a new connector.
You can extend the connector and set the configuration once.
<?php
namespace App\Connectors;
use CodebarAg\DocuWare\Connectors\DocuWareConnector;
use CodebarAg\DocuWare\DTO\Config\ConfigWithCredentials;
class YourOwnDocuWareConnector extends DocuWareConnector
{
public function __construct() {
$configuration = new ConfigWithCredentials(
username: 'username',
password: 'password',
);
parent::__construct($configuration);
}
}
use App\Connectors\YourOwnDocuWareConnector;
use CodebarAg\DocuWare\DTO\Config\ConfigWithCredentials;
$connector = new YourOwnDocuWareConnector();
The Following events will be fired:
use CodebarAg\DocuWare\Events\DocuWareResponseLog;
// Log each response from the DocuWare REST API.
DocuWareResponseLog::class => [
//
],
You can publish the config file with:
php artisan vendor:publish --provider="CodebarAg\DocuWare\DocuWareServiceProvider" --tag="docuware-config"
This is the contents of the published config file:
<?php
return [
/*
|--------------------------------------------------------------------------
| Cache driver
|--------------------------------------------------------------------------
| You may like to define a different cache driver than the default Laravel cache driver.
|
*/
'cache_driver' => env('DOCUWARE_CACHE_DRIVER', env('CACHE_DRIVER', 'file')),
/*
|--------------------------------------------------------------------------
| Requests timeout
|--------------------------------------------------------------------------
| This variable is optional and only used if you want to set the request timeout manually.
|
*/
'timeout' => env('DOCUWARE_TIMEOUT', 15),
/*
|--------------------------------------------------------------------------
| DocuWare Credentials
|--------------------------------------------------------------------------
|
| Before you can communicate with the DocuWare REST-API it is necessary
| to enter your credentials. You should specify a url containing the
| scheme and hostname. In addition add your username and password.
|
*/
'credentials' => [
'url' => env('DOCUWARE_URL'),
'username' => env('DOCUWARE_USERNAME'),
'password' => env('DOCUWARE_PASSWORD'),
],
/*
|--------------------------------------------------------------------------
| Passphrase
|--------------------------------------------------------------------------
|
| In order to create encrypted URLs we need a passphrase. This enables a
| secure exchange of DocuWare URLs without anyone being able to modify
| your query strings. You can find it in the organization settings.
|
*/
'passphrase' => env('DOCUWARE_PASSPHRASE'),
/*
|--------------------------------------------------------------------------
| Configurations
|--------------------------------------------------------------------------
|
*/
'configurations' => [
'search' => [
'operation' => 'And',
/*
* Force Refresh
* Determine if result list is retrieved from the cache when ForceRefresh is set
* to false (default) or always a new one is executed when ForceRefresh is set to true.
*/
'force_refresh' => true,
'include_suggestions' => false,
'additional_result_fields' => [],
],
'cache' => [
'driver' => env('DOCUWARE_CACHE_DRIVER', env('CACHE_DRIVER', 'file')),
'lifetime_in_seconds' => env('DOCUWARE_CACHE_LIFETIME_IN_SECONDS', 60),
],
],
];
Copy your own phpunit.xml-file.
cp phpunit.xml.dist phpunit.xml
Modify environment variables in the phpunit.xml-file:
<env name="DOCUWARE_TOKEN" value=""/>
<env name="DOCUWARE_URL" value="https://domain.docuware.cloud"/>
<env name="DOCUWARE_USERNAME" value="user@domain.test"/>
<env name="DOCUWARE_PASSWORD" value="password"/>
<env name="DOCUWARE_PASSPHRASE" value="passphrase"/>
<env name="DOCUWARE_TIMEOUT" value="30"/>
<env name="DOCUWARE_CACHE_LIFETIME_IN_SECONDS" value="0"/>
<env name="DOCUWARE_TESTS_FILE_CABINET_ID" value=""/>
<env name="DOCUWARE_TESTS_DIALOG_ID" value=""/>
<env name="DOCUWARE_TESTS_BASKET_ID" value=""/>
<env name="DOCUWARE_TESTS_ORGANIZATION_ID" value=""/>
Run the tests:
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
- Sebastian Fix
- Rhys Lees
- All Contributors
- Skeleton Repository from Spatie
- Laravel Package Training from Spatie
The MIT License (MIT). Please see License File for more information.