Basic concepts
Authentication
The first lines in your Java code should be used to create the Webservices object.
We suggest using this method:
OKMWebservices ws = OKMWebservicesFactory.newInstance(host, username, password);
package com.openkm;
import com.openkm.sdk4j.OKMWebservices;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.exception.AccessDeniedException;
import com.openkm.sdk4j.exception.DatabaseException;
import com.openkm.sdk4j.exception.RepositoryException;
import com.openkm.sdk4j.exception.UnknowException;
import com.openkm.sdk4j.exception.WebserviceException;
public class Test {
	public static void main(String[] args) {
		String host = "http://localhost:8080/OpenKM";
		String username =  "okmAdmin";
		String password = "admin";
		OKMWebservices ws = OKMWebservicesFactory.newInstance(host, username, password);
                
		try {
			System.out.println(ws.getAppVersion());
		} catch (RepositoryException e) {
			e.printStackTrace();
		} catch (DatabaseException e) {
			e.printStackTrace();
		} catch (UnknowException e) {
			e.printStackTrace();
		} catch (WebserviceException e) {
			e.printStackTrace();
		}
	}	
}
Also is possible doing the same from each API class implementation.
We do not suggest this way.
For example with this method:
RepositoryImpl repositoryImpl = new RepositoryImpl(host, username, password, new BeanHelper());
package com.openkm;
import com.openkm.sdk4j.OKMWebservices;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.exception.AccessDeniedException;
import com.openkm.sdk4j.exception.DatabaseException;
import com.openkm.sdk4j.exception.RepositoryException;
import com.openkm.sdk4j.exception.UnknowException;
import com.openkm.sdk4j.exception.WebserviceException;
import com.openkm.sdk4j.impl.RepositoryImpl;
import com.openkm.sdk4j.util.BeanHelper;
public class Test {
	public static void main(String[] args) {
		String host = "http://localhost:8080/OpenKM";
		String username =  "okmAdmin";
		String password = "admin";
		RepositoryImpl repositoryImpl = new RepositoryImpl(host, username, password, new BeanHelper());
		
		try {
			System.out.println(repositoryImpl.getAppVersion());
		} catch (RepositoryException e) {
			e.printStackTrace();
		} catch (DatabaseException e) {
			e.printStackTrace();
		} catch (UnknowException e) {
			e.printStackTrace();
		} catch (WebserviceException e) {
			e.printStackTrace();
		}
	}	
}
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.31 what can change with time.
There is a direct correspondence between the classes and methods implemented at com.openkm.api packages and available from SDK for Java.
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.java  | 
 BaseAuth.java  | 
| 
 OKMBookmark  | 
 Manages the user bookmarks.  | 
 No  | 
||
| 
 OKMDashboard  | 
 Manages all data shown at dashboard.  | 
 No  | 
||
| 
 OKMDocument  | 
 Manages documents. For example create, move or delete a document.  | 
 Yes  | 
 DocumentImpl.java  | 
 BaseDocument.java  | 
| 
 OKMFolder  | 
 Manages folders. For example create, move or delete a folder.  | 
 Yes  | 
 FolderImpl.java  | 
 BaseFolder.java  | 
| 
 OKMMail  | 
 Manages mails. For example create, move or delete a mails.  | 
 Yes  | 
 MailImpl.java  | 
 BaseMail.java  | 
| 
 OKMNote  | 
 Manages notes on any node type. For example create, edit or delete a note on a document, folder, mail or record.  | 
 Yes  | 
 NoteImpl.java  | 
 BaseNote.java  | 
| 
 OKMNotification  | 
 Manages notifications. For example add or remove subscriptions on a document or a folder.  | 
 No  | 
 
  | 
 
  | 
| 
 OKMProperty  | 
 Manages categories and keywords. For example add or remove keywords on a document, folder, mail or record.  | 
 Yes  | 
 PropertyImpl.java  | 
 BaseProperty.java  | 
| 
 OKMPropertyGroup  | 
 Manages metadata. For example add metadata group, set metadata fields.  | 
 Yes  | 
 PropertyGroupImpl.java  | 
 BasePropertyGroup.java  | 
| 
 OKMRecord  | 
 Manages records. For example create, move or delete a record.  | 
 Yes  | 
 RecordImpl.java  | 
 BaseRecord.java  | 
| 
 OKMRelation  | 
 Manages relations between nodes. For example create a relation ( parent-child ) between two documents.  | 
 Yes  | 
 RelationImpl.java  | 
 BaseRelation.java  | 
| 
 OKMRepository  | 
 A lot of options related with the repository. For example get the properties of main root node ( /okm:root ).  | 
 Yes  | 
 RepositoryImpl.java  | 
 BaseRepository.java  | 
| 
 OKMReport  | 
 Manages reports. For example execute reports.  | 
 Yes  | 
 ReportImpl.java  | 
 BaseReport.java  | 
| 
 OKMSearch  | 
 Manages search feature. For example manage saved queries or perform a new query to the repository.  | 
 Yes  | 
 SearchImpl.java  | 
 BaseSearch.java  | 
| 
 OKMStats  | 
 General stats of the repository.  | 
 No  | 
||
| 
 OKMTask  | 
 Manages tasks. For example create a new task.  | 
 No  | 
||
| 
 OKMUserConfig  | 
 Manages user home configuration.  | 
 No  | 
||
| 
 OKMWorkflow  | 
 Manages workflows. For example execute a new workflow.  | 
 Yes  | 
 WorkflowImpl.java  | 
 BaseWorkflow.java  | 
Class Hierarchy
Packages detail:
| Name | Description | 
|---|---|
| 
 com.openkm  | 
 The com.openkm.OKMWebservicesFactory that returns an com.openkm.OKMWebservices object which implements all interfaces. OKMWebservices ws = OKMWebservicesFactory.newInstance(host, username, password);  | 
| 
 com.openkm.sdk4j.bean  | 
 Contains all classes result of unmarshalling REST objects.  | 
| 
 com.openkm.sdk4j.definition  | 
 All interface classes: 
  | 
| 
 com.openkm.sdk4j.impl  | 
 All interface implementation classes: 
  | 
| 
 com.openkm.sdk4j.util  | 
 A couple of utilities. The class com.openkm.sdk4j.util.ISO8601 should be used to set and parse metadata date fields.  | 
| 
 com.openkm.sdk4j.exception  | 
 All exception classes.  |