3.2 KiB
!!! 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)
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. The sql param for the offline store is provided by implementing the SqlStore interface.
initOfflineStore(sql: SqlStore): Promise<Session | null>
Browser apps typically use the WebStore interface where minimal session data is stored. The web param for the minimal online store is provided by implementing the WebStore interface.
initOnlineStore(web: WebStore): Promise<Session | null>
User 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<Session>
access provides a Session through token access to an account when password is forgotten
access(node: string, secure: boolean, token: string, params: SessionParams): Promise<Session>
create provides a Session to a newly created account
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
available(node: string, secure: boolean): Promise<number>
username returns whether the username is available for account creation
username(name: string, token: string, node: string, secure: boolean): Promise<boolean>
logout releases the Session interface
logout(session: Session, all: boolean): Promise<void>
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<Node>
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<Bot>