From 2218292fecbb90d753f75d2b9186b8606afa6e4f Mon Sep 17 00:00:00 2001
From: Pierre Balzack <96387156+balzack@users.noreply.github.com>
Date: Tue, 20 Aug 2024 17:20:36 -0700
Subject: [PATCH] Create API.md
---
app/sdk/API.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+)
create mode 100644 app/sdk/API.md
diff --git a/app/sdk/API.md b/app/sdk/API.md
new file mode 100644
index 00000000..ee501018
--- /dev/null
+++ b/app/sdk/API.md
@@ -0,0 +1,65 @@
+The API for the Databag package is provided through a set of typescript interfaces. Each interface groups methods by their fonctionality and only need to be allocated as needed.
+
+## 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```
+