Skip to main content

API SDK

The API SDK JavaScript package provides a list of functions to make it easier to work with the Bandada API.

Example of project using the API SDK library: bandada-api-sdk-demo.

Install library

npm install @bandada/api-sdk

Create a new instance

# new ApiSdk(url: SupportedUrl | string, config?: object): ApiSdk

Creates a new instance of ApiSdk using the API URL and the config.

  • Create a new instance using the Bandada API URL and the default config.

This is what you need if you are using the production Bandada API.

import { ApiSdk } from "@bandada/api-sdk"

const apiSdk = new ApiSdk()

This is useful when working with the development environment.

import { ApiSdk, SupportedUrl } from "@bandada/api-sdk"

const apiSdk = new ApiSdk(SupportedUrl.DEV)
  • Create a new instance using a custom API URL.
import { ApiSdk } from "@bandada/api-sdk"

const apiSdk = new ApiSdk("https://example.com/api")
  • Create a new instance using a custom API URL and config.
import { ApiSdk } from "@bandada/api-sdk"

const url = "https://example.com/api"
const config = {
headers: {
"Content-Type": "text/html"
}
}
const apiSdk = new ApiSdk(url, config)

Create group

# createGroup(): Promise<Group>

Creates a Bandada group.

const groupCreateDetails = {
name: "Group 1",
description: "This is Group 1.",
treeDepth: 16,
fingerprintDuration: 3600
}
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

const group = await apiSdk.createGroup(groupCreateDetails, apiKey)

Create a credential group

# createGroup(): Promise<Group>

Creates a Bandada credential group.

const credentials = {
id: "BLOCKCHAIN_BALANCE",
criteria: {
minBalance: "10",
network: "Sepolia"
}
}

const groupCreateDetails = {
name: "Group 1",
description: "This is Group 1.",
treeDepth: 16,
fingerprintDuration: 3600,
credentials
}
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

const group = await apiSdk.createGroup(groupCreateDetails, apiKey)

Create a multiple credentials group

# createGroup(): Promise<Group>

Creates a Bandada multiple credential group.

const credentials = {
credentials: [
{
id: "BLOCKCHAIN_TRANSACTIONS",
criteria: {
minTransactions: 10,
network: "Sepolia"
}
},
{
id: "BLOCKCHAIN_BALANCE",
criteria: {
minBalance: "5",
network: "Sepolia"
}
}
],
expression: ["", "and", ""]
}

const groupCreateDetails = {
name: "Group 1",
description: "This is Group 1.",
treeDepth: 16,
fingerprintDuration: 3600,
credentials
}
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

const group = await apiSdk.createGroup(groupCreateDetails, apiKey)

Create groups

# createGroups(): Promise<Group[]>

Creates one or many Bandada groups.

const groupsCreateDetails = [
{
name: "Group 1",
description: "This is Group 1.",
treeDepth: 16,
fingerprintDuration: 3600
},
{
name: "Group 2",
description: "This is Group 2.",
treeDepth: 16,
fingerprintDuration: 3600
}
]
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

const groups = await apiSdk.createGroups(groupsCreateDetails, apiKey)

Remove group

# removeGroup(): Promise<void>

Removes a specific Bandada group.

const groupId = "10402173435763029700781503965100"
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

await apiSdk.removeGroup(groupId, apiKey)

Remove groups

# removeGroups(): Promise<void>

Removes one or many Bandada groups.

const groupIds = [
"10402173435763029700781503965100",
"20402173435763029700781503965200"
]
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

await apiSdk.removeGroups(groupIds, apiKey)

Update group

# updateGroup(): Promise<Group>

Updates a specific Bandada group.

const groupId = "10402173435763029700781503965100"
const groupUpdateDetails = {
description: "This is a new group.",
treeDepth: 20,
fingerprintDuration: 4000
}
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

await apiSdk.updateGroup(groupId, groupUpdateDetails, apiKey)

Update groups

# updateGroups(): Promise<Group[]>

Updates one or many Bandada groups.

const groupIds = [
"10402173435763029700781503965100",
"20402173435763029700781503965200"
]
const updatedGroups: Array<GroupUpdateDetails> = [
{
description: "This is a new group1.",
treeDepth: 32,
fingerprintDuration: 7200
},
{
description: "This is a new group2.",
treeDepth: 32,
fingerprintDuration: 7200
}
]
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

await apiSdk.updateGroups(groupId, groupUpdateDetails, apiKey)

Get group

# getGroup(): Promise<Group>

Returns a specific group.

const groupId = "10402173435763029700781503965100"

const group = await apiSdk.getGroup(groupId)

Get groups

# getGroups(): Promise<Group[]>

Returns the list of groups.

const groups = await apiSdk.getGroups()

Get groups by admin id

# getGroupsByAdminId(): Promise<Group[]>

Returns the list of groups by admin id.

const adminId =
"0xdf558148e66850ac48dbe2c8119b0eefa7d08bfd19c997c90a142eb97916b847"
const groups = await apiSdk.getGroupsByAdminId(adminId)

Get groups by member id

# getGroupsByMemberId(): Promise<Group[]>

Returns the list of groups by member id.

const memberId = "1"
const groups = await apiSdk.getGroupsByMemberId(memberId)

Is group member

# isGroupMember(): Promise<boolean>

Returns true if the member is in the group and false otherwise.

const groupId = "10402173435763029700781503965100"
const memberId = "1"

const isMember = await apiSdk.isGroupMember(groupId, memberId)

Generate merkle proof

# generateMerkleProof(): Promise<string>

Returns the Merkle Proof for a member in a group.

const groupId = "10402173435763029700781503965100"
const memberId = "1"

const proof = await apiSdk.generateMerkleProof(groupId, memberId)

Add member using an API Key

# addMemberByApiKey(): Promise<void>

Adds a member to a group using an API Key.

const groupId = "10402173435763029700781503965100"
const memberId = "1"
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

await apiSdk.addMemberByApiKey(groupId, memberId, apiKey)

Add members using an API Key

# addMembersByApiKey(): Promise<void>

Adds multiple members to a group using an API Key.

const groupId = "10402173435763029700781503965100"
const memberIds = ["1", "2", "3"]
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

await apiSdk.addMembersByApiKey(groupId, memberIds, apiKey)

Add member using an invite code

# addMemberByInviteCode(): Promise<void>

Adds a member to a group using an Invite Code.

const groupId = "10402173435763029700781503965100"
const memberId = "1"
const inviteCode = "MQYS4UR5"

await apiSdk.addMemberByInviteCode(groupId, memberId, inviteCode)

Remove member using an API Key

# removeMemberByApiKey(): Promise<void>

Removes a member from a group using an API Key.

const groupId = "10402173435763029700781503965100"
const memberId = "1"
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

await apiSdk.removeMemberByApiKey(groupId, memberId, apiKey)

Remove members using an API Key

# removeMembersByApiKey(): Promise<void>

Removes multiple members from a group using an API Key.

const groupId = "10402173435763029700781503965100"
const memberIds = ["1", "2", "3"]
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

await apiSdk.removeMembersByApiKey(groupId, memberIds, apiKey)

Create invite

# createInvite(): Promise<Invite>

Creates a new group invite.

const groupId = "10402173435763029700781503965100"
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

const invite = await apiSdk.createInvite(groupId, apiKey)

Get invite

# getInvite(): Promise<Invite>

Returns a specific invite.

const inviteCode = "C5VAG4HD"
const apiKey = "70f07d0d-6aa2-4fe1-b4b9-06c271a641dc"

const invite = await apiSdk.getInvite(inviteCode)

Get credential group join URL

# getCredentialGroupJoinUrl(): string

Returns a custom URL string for joining a credential group.

import { DashboardUrl } from "@bandada/api-sdk"

const dashboardUrl = DashboardUrl.DEV
const groupId = "10402173435763029700781503965100"
const commitment = "1"
const providerName = "github"
const redirectUri = "http://localhost:3003"

const url = apiSdk.getCredentialGroupJoinUrl(
dashboardUrl,
groupId,
commitment,
providerName,
redirectUri
)