Basic concepts
Authentication
The first lines in your .NET code should be used to create the Webservices object.
We suggest using this method:
OKMWebservices ws = OKMWebservicesFactory.newInstance(host, username, password);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.exception;
namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/OpenKM";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host, username, password);
            try {
                System.Console.WriteLine(ws.getAppVersion().getVersion());
            } catch (RepositoryException e) {
                System.Console.WriteLine(e.ToString());
            } catch (DatabaseException e) {
                System.Console.WriteLine(e.ToString());
            } catch (UnknowException e) {
                System.Console.WriteLine(e.ToString());
            } catch (WebserviceException e) {
                System.Console.WriteLine(e.ToString());
            }
            System.Console.ReadKey();
        }
    }
}
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);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.exception;
using com.openkm.sdk4csharp.impl;
namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/OpenKM";
            String username = "okmAdmin";
            String password = "admin";
            RepositoryImpl repositoryImpl = new RepositoryImpl(host, username, password);
            
            try {
                System.Console.WriteLine(repositoryImpl.getAppVersion().getVersion());
            } catch (RepositoryException e) {
                System.Console.WriteLine(e.ToString());
            } catch (DatabaseException e) {
                System.Console.WriteLine(e.ToString());
            } catch (UnknowException e) {
                System.Console.WriteLine(e.ToString());
            } catch (WebserviceException e) {
                System.Console.WriteLine(e.ToString());
            }
            
            System.Console.ReadKey();
        }
    }
}
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/apidoc/ you'll see all available javadoc documentation.
At the moment of writing this page the actual OpenKM version was 6.3.0 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 .NET.
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.cs | BaseAuth.cs | 
| OKMBookmark | Manages the user bookmarks. | No | ||
| OKMDashboard | Manages all data shown at dashboard. | No | ||
| OKMDocument | Manages documents. For example creates, moves or deletes a document. | Yes | DocumentImpl.cs | BaseDocument.cs | 
| OKMFolder | Manages folders. For example creates, moves or deletes a folder. | Yes | FolderImpl.cs | BaseFolder.cs | 
| OKMMail | Manages mails. For example creates, moves or deletes a mail. | No | MailImpl.cs | BaseMail.cs | 
| OKMNote | Manages notes on any node type. For example creates, edits or deletes a note on a document, folder, mail or record. | Yes | NoteImpl.cs | BaseNote.cs | 
| OKMNotification | Manages notifications. For example adds or removes subscriptions on a document or a folder. | No | 
 | 
 | 
| OKMProperty | Manages categories and keywords. For example adds or removes keywords on a document, folder, mail or record. | Yes | PropertyImpl.cs | BaseProperty.cs | 
| OKMPropertyGroup | Manages metadata. For example adds metadata group, sets metadata fields. | Yes | PropertyGroupImpl.cs | BasePropertyGroup.cs | 
| OKMRepository | A lot of stuff related with repository. For example it gets the properties of main root node ( /okm:root ). | Yes | RepositoryImpl.cs | BaseRepository.cs | 
| OKMSearch | Manage search feature. For example it manages saved queries or perform a new query to the repository. | Yes | SearchImpl.cs | BaseSearch.cs | 
| OKMStats | General stats of the repository. | No | ||
| OKMUserConfig | Manages user home configuration. | No | 
Class Hierarchy
Packages detail:
| Name | Description | 
|---|---|
| com.openkm.sdk4csharp | The com.openkm.OKMWebservicesFactory that returns an com.openkm.OKMWebservices object which implements all interfaces. OKMWebservices ws = OKMWebservicesFactory.newInstance(host, username, password); | 
| com.openkm.sdk4csharp.bean | Contains all classes result of unmarshalling REST objects. | 
| com.openkm.sdk4csharp.definition | All interface classes: 
 | 
| com.openkm.sdk4csharp.impl | All interface implementation classes: 
 | 
| com.openkm.sdk4csharp.util | A couple of utilities. The class com.openkm.sdk4csharp.util.ISO8601 should be used to set and parse metadata date fields. | 
| com.openkm.sdk4csharp.exception | All exception classes. | 
 
                   
                  