2024-08-28 17:21:17 -07:00
..
2024-08-27 22:24:27 -07:00
2024-08-27 22:24:27 -07:00
2024-08-27 22:24:27 -07:00
2024-08-24 10:58:51 -07:00
2024-08-28 17:21:17 -07:00
2024-07-03 16:55:20 -07:00
2024-08-19 07:33:57 -07:00

!!! 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

The crypto and log params are provided by implementing the Crypto and Logging interface respectively.

DatabacgClientSDK(crypto?: Crypto, log?: Logging)


User communcation is provided through the Session interface

Login provides a Session through an account login

DatabacgClientSDK::login(handle: string, password: string, node: string, secure: boolean, mfaCode: string | null, params: SessionParams): Promise<Session>

Access provides a Session through token access to an account when password is forgotten

DatabacgClientSDK::access(node: string, secure: boolean, token: string, params: SessionParams): Promise<Session>

Create provides a Session to a newly created account

DatabacgClientSDK::create(handle: string, password: string, node: string, secure: boolean, token: string | null, params: SessionParams): Promise<Session>

Available returns the number of accounts that can be publically created

DatabacgClientSDK::available(node: string, secure: boolean): Promise<number>

Username returns whether the username is available for account creation

DatabacgClientSDK::username(name: string, token: string, node: string, secure: boolean): Promise<boolean>

Logout releases the Session interface

DatabacgClientSDK::logout(session: Session, all: boolean): Promise<void>

Storage can then be provided to the SDK to persist sessions

Mobile apps typically use the offline store where most of the relational data is saved. The sql param is provided by implementing the SqlStore interface.

DatabacgClientSDK::initOfflineStore(sql: SqlStore): Promise<Session | null>

Browser apps typically the online store where minimal session data is saved. The web param is provided by implementing the WebStore interface.

DatabacgClientSDK::initOnlineStore(web: WebStore): Promise<Session | null>


Admin communcation is provided through the Node interface

Configure allocates the Node interface for the server

DatabacgClientSDK::configure(node: string, secure: boolean, token: string, mfaCode: string | null): Promise<Node>


Bot communication is provided through the Bot interface

Automate allocates the Bot interface for ia specific communication channel

DatabacgClientSDK::automate(node: string, secure: boolean, token: string): Promise<Bot>


User Communication

Session provides the core functionality and provides access to all user interface modules

Account Settings are managed through the Account interface

Session::getAccount(): Account

Account Profile is managed through the Identity interface

Session::getIdentity(): Identity

Account Contacts are managed through the Contact Inferface

Session::getContact(): Contact

Contact groupings are managed through the Alias Interface

Session::getAlias(): Alias

Account attribute data is managed through the Attribute Interface

Session::getAttribute(): Attribute

Account content channels are managed through the Content Interface

Session::getContent(): Content

An aggregation of content channels provided by contacts is managed through the Stream Interface

Session::getStream(): Stream

WebRTC calling is managed through the Ring Interface

Session::getRing(): Ring

Management of an active content channel is provided through the Focus Interface

Session::addFocus(cardId: string | null, channelId: string): Focus
Session::removeFocus(focus: Focus): void

The connectivity status is provided through a status lisenter

Session::addStatusListener(ev: (status: string) => void): void
Session::removeStatusListener(ev: (status: string) => void): void


Admin Communication

Bot Communication