From 1539b49d6518cb5497e07d751a25ea5246711a5a Mon Sep 17 00:00:00 2001
From: Pierre Balzack <96387156+balzack@users.noreply.github.com>
Date: Tue, 20 Aug 2024 17:34:21 -0700
Subject: [PATCH] Update README.md
---
app/sdk/README.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 70 insertions(+), 1 deletion(-)
diff --git a/app/sdk/README.md b/app/sdk/README.md
index 38be0ff1..e9c7c13d 100644
--- a/app/sdk/README.md
+++ b/app/sdk/README.md
@@ -1 +1,70 @@
-DatabagClientSDK provides a typescript interface for communication over the decentralized databag network. The SDK has minimal dependencies and contains reference applications for react-js, react-native, and node. [Click here for the API](/app/sdk/API.md)
+!!! still a work in progress !!!
+
+DatabagClientSDK provides a typescript interface for communication over the decentralized databag network. The SDK has minimal dependencies and contains reference applications for react-js, react-native, and node.
+
+The API is provided through a set of typescript interfaces. Each interface groups methods by their functionality and are only allocated as needed. The platform specific implementations of storage and cryptography are defined externally and are also provided to the SDK through interfaces.
+
+## Initialization
+
+
+ The SDK must first be allocated
+
+```DatabacgClientSDK(crypto: Crypto | null, log?: Logging)```
+
+
+
+ Persistent storage can then be provided to the SDK
+
+Mobile apps typically use the SqlStore interface allowing for offline use cases where most of the relational data is stored
+
+```initOfflineStore(sql: SqlStore): Promise```
+
+Browser apps typically use the WebStore interface where minimal session data is stored
+
+```initOnlineStore(web: WebStore): Promise```
+
+
+
+ Account communcation is provided through the Session interface
+
+login provides a Session through an account login
+
+```login(handle: string, password: string, node: string, secure: boolean, mfaCode: string | null, params: SessionParams): Promise```
+
+access provides a Session through token access to an account when password is forgotten
+
+```access(node: string, secure: boolean, token: string, params: SessionParams): Promise```
+
+create provides a Session to a newly created account
+
+```create(handle: string, password: string, node: string, secure: boolean, token: string | null, params: SessionParams): Promise```
+
+available returns the number of accounts that can be publically created
+
+```available(node: string, secure: boolean): Promise```
+
+username returns whether the username is available for account creation
+
+```username(name: string, token: string, node: string, secure: boolean): Promise```
+
+logout releases the Session interface
+
+```logout(session: Session, all: boolean): Promise```
+
+
+
+ Admin communcation is provided through the Node interface
+
+configure allocates the Node interface for the server
+
+```configure(node: string, secure: boolean, token: string, mfaCode: string | null): Promise```
+
+
+
+ Bot communication is provided through the Bot interface
+
+automate allocates the Bot interface for ia specific communication channel
+
+```automate(node: string, secure: boolean, token: string): Promise```
+
+