Basic concepts
Authentication
The first lines in your PHP code should be used to create the Webservices object.
We suggest using this method:
$this->ws = OKMWebServicesFactory::build(host, user, password);
<?php
include '../src/openkm/OpenKM.php';
use openkm\OKMWebServicesFactory;
use openkm\OpenKM;
use openkm\bean\AppVersion;
use Httpful\Exception\ConnectionErrorException;
use openkm\exception\AccessDeniedException;
use openkm\exception\PathNotFoundException;
use openkm\exception\RepositoryException;
use openkm\exception\DatabaseException;
use openkm\exception\UnknowException;
class Example {
    const HOST = "http://localhost:8080/OpenKM/";
    const USER = "okmAdmin";
    const PASSWORD = "admin";
    private $ws;
    public function __construct() {
        $this->ws = OKMWebServicesFactory::build(self::HOST, self::USER, self::PASSWORD);
    }
    public function testGetAppVersion() {
        try {            
            $appVersion = $this->ws->getAppVersion();
            var_dump($appVersion);
        } catch (AccessDeniedException $ade) {
            var_dump($ade);
        } catch (PathNotFoundException $pnfe) {
            var_dump($pnfe);
        } catch (RepositoryException $re) {
            var_dump($re);
        } catch (DatabaseException $de) {
            var_dump($de);
        } catch (UnknowException $ue) {
            var_dump($ue);
        } catch (ConnectionErrorException $cee) {
            var_dump($cee);
        } catch (Exception $e) {
            var_dump($e);
        }
    }
}
$openkm = new OpenKM(); //autoload
$example = new Example();
$example->testGetAppVersion();
?>
Also is possible doing the same from each API class implementation.
We do not suggest this way.
For example with this method:
$this->repository = new RepositoryImpl(self::HOST, self::USER, self::PASSWORD);
<?php
include '../src/openkm/OpenKM.php';
use openkm\impl\RepositoryImpl;
use openkm\OpenKM;
use openkm\bean\AppVersion;
use Httpful\Exception\ConnectionErrorException;
use openkm\exception\AccessDeniedException;
use openkm\exception\PathNotFoundException;
use openkm\exception\RepositoryException;
use openkm\exception\DatabaseException;
use openkm\exception\UnknowException;
class Test {
    const HOST = "http://localhost:8080/OpenKM/";
    const USER = "okmAdmin";
    const PASSWORD = "admin";
    private $repository;
    public function __construct() {
        $this->repository = new RepositoryImpl(self::HOST, self::USER, self::PASSWORD);
    }
    public function testGetAppVersion() {
        try {            
            $appVersion = $this->repository->getAppVersion();
            var_dump($appVersion);
        } catch (AccessDeniedException $ade) {
            var_dump($ade);
        } catch (PathNotFoundException $pnfe) {
            var_dump($pnfe);
        } catch (RepositoryException $re) {
            var_dump($re);
        } catch (DatabaseException $de) {
            var_dump($de);
        } catch (UnknowException $ue) {
            var_dump($ue);
        } catch (ConnectionErrorException $cee) {
            var_dump($cee);
        } catch (Exception $e) {
            var_dump($e);
        }
    }
}
$openkm = new OpenKM(); //autoload
$test = new Test();
$test->testGetAppVersion();
?>
Accessing API
OpenKM API classes are under com.openkm package, as can shown at this javadoc API summary.
At main url http://docs.openkm.com/javadoc/ you'll see all available javadoc documentation.
At the moment of writing this page the actual OpenKM version was 6.4.22 what can change on time.
There is a direct correspondence between the classes and methods into, implemented at com.openkm.api packages and available from SDK for PHP.
OpenKM API classes:
| OpenKM API class | Description | Supported | Implementation | Interface | 
|---|---|---|---|---|
| 
 OKMAuth  | 
 Manages security and users. For example add or remove grants on a node, create or modify users or getting the profiles.  | 
 Yes  | 
 AuthImpl.php  | 
 BaseAuth.php  | 
| 
 OKMBookmark  | 
 Manages the user bookmarks.  | 
 No  | 
||
| 
 OKMDashboard  | 
 Manages all data shown at dashboard.  | 
 No  | 
||
| 
 OKMDocument  | 
 Manage documents. For example creates, moves or deletes a document.  | 
 Yes  | 
 DocumentImpl.php  | 
 BaseDocument.php  | 
| 
 OKMFolder  | 
 Manages folders. For example create, move or delete a folder.  | 
 Yes  | 
 FolderImpl.php  | 
 BaseFolder.php  | 
| 
 OKMMail  | 
 Manages mails. For example creates, moves or deletes a mails.  | 
 Yes  | 
 MailImpl.php  | 
 BaseMail.php  | 
| 
 OKMNote  | 
 Manages notes on any node type. For example creates, edits or deletes a note on a document, folder, mail or record.  | 
 Yes  | 
 NoteImpl.php  | 
 BaseNote.php  | 
| 
 OKMNotification  | 
 Manages notifications. For example add or remove subscriptions on a document or a folder.  | 
 No  | 
 NotificationImpl.php  | 
 BaseNotification.php  | 
| 
 OKMProperty  | 
 Manages categories and keywords. For example add or remove keywords on a document, folder, mail or record.  | 
 Yes  | 
 PropertyImpl.php  | 
 BaseProperty.php  | 
| 
 OKMPropertyGroup  | 
 Manages metadata. For example add metadata group, set metadata fields.  | 
 Yes  | 
 PropertyGroupImpl.php  | 
 BasePropertyGroup.php  | 
| 
 OKMRecord  | 
 Manages records. For example create, move or delete a record.  | 
 Yes  | 
 RecordImpl.php  | 
 BaseRecord.php  | 
| 
 OKMRelation  | 
 Manages relations between nodes. For example create a relation ( parent-child ) between two documents.  | 
 Yes  | 
 RelationImpl.php  | 
 BaseRelation.php  | 
| 
 OKMRepository  | 
 A lot of stuff related with repository. For example get the properties of main root node ( /okm:root ).  | 
 Yes  | 
 RepositoryImpl.php  | 
 BaseRepository.php  | 
| 
 OKMSearch  | 
 Manages search feature. For example manage saved queries or perform a new query to the repository.  | 
 Yes  | 
 SearchImpl.php  | 
 BaseSearch.php  | 
| 
 OKMStats  | 
 General stats of the repository.  | 
 No  | 
||
| 
 OKMTask  | 
 Manages task. For example create a new task.  | 
 No  | 
||
| 
 OKMUserConfig  | 
 Manages user home configuration.  | 
 No  | 
||
| 
 OKMWorkflow  | 
 Manages workflows. For example executes a new workflow.  | 
 Yes  | 
 WorkflowImpl.php  | 
 BaseWorkflow.php  | 
Class Hierarchy
Packages detail:
| Name | Description | 
|---|---|
| 
 com.openkm  | 
 The openkm.OKMWebservicesFactory that returns an openkm.OKMWebservices object which implements all interfaces. $this->ws = OKMWebServicesFactory::build(host, user, password);  | 
| 
 openkm.bean  | 
 Contains all classes result of unmarshalling REST objects.  | 
| 
 openkm.definition  | 
 All interface classes: 
  | 
| 
 openkm.impl  | 
 All interface implementation classes: 
  | 
| 
 openkm.util  | 
 A couple of utilities.  | 
| 
 openkm.exception  | 
 All exception classes.  |