BastyonBastyon
  • Get Started

    • Getting Started
    • Easy Node Setup Guide
    • Full Node Setup Guide
  • Monetization

    • Bastyon Monetization Guide
  • Platform Overview

    • Platform Overview
    • Contributing to Bastyon
  • Blockchain Node

    • Getting Started
    • Source Code
    • Building
    • Usage
    • RPC
  • API

    • Introduction
    • Get Started
    • RPC
    • MiniApps
  • Mini Apps

    • Getting Started
    • Permissions
    • SDK
  • Barteron

    • Barteron APIs
  • English
  • Русский
  • Get Started

    • Getting Started
    • Easy Node Setup Guide
    • Full Node Setup Guide
  • Monetization

    • Bastyon Monetization Guide
  • Platform Overview

    • Platform Overview
    • Contributing to Bastyon
  • Blockchain Node

    • Getting Started
    • Source Code
    • Building
    • Usage
    • RPC
  • API

    • Introduction
    • Get Started
    • RPC
    • MiniApps
  • Mini Apps

    • Getting Started
    • Permissions
    • SDK
  • Barteron

    • Barteron APIs
  • English
  • Русский
  • Mini Apps

    • Guide to Creating Mini-Apps in Bastyon
    • Bastyon Mini-Apps Permissions
    • Bastyon SDK Reference

Bastyon SDK Reference

Table of Contents

  • Installation
  • Getting Started
    • Initialization
    • Events
  • API Reference
    • Core Methods
    • Get Methods
    • Permission Methods
    • Open Methods
    • Barteron Methods
    • Image Methods
    • Chat Methods
    • Helper Methods

Installation

CDN Integration

<script src="https://bastyon.com/js/lib/apps/sdk.js"></script>

Getting Started

Initialization

const sdk = new BastyonSdk();

// Initialize SDK
await sdk.init();

// Notify platform about readiness
sdk.emit('loaded');

Events

BastyonSdk supports an event system for platform interaction.

EventDescription
blockBlockchain changes
stateApplication state changes
actionUser actions
balanceBalance updates
localeLocale changes
themeTheme changes
changestateState changes

API Reference

Core Methods

init()

Initializes the SDK.

Returns:

Promise<{
  id: string;           // Application ID
  name: string;         // Name
  version: string;      // Version
  theme: string;        // Theme
  margintop: number;    // Top margin
  production: boolean;  // Mode
  project: object;      // Configuration
}>

emit(event, data?)

Sends an event to the application.

Parameters:

  • event: string - Event name
  • data?: object - Event data (optional)
sdk.emit('changestate', { value: 'newState', replace: true });

on(event, callback)

Subscribes to an event.

Parameters:

  • event: string - Event name
  • callback: (data: any) => void - Handler
sdk.on('balance', (balance) => {
  console.log('New balance:', balance);
});

off(event, callback)

Unsubscribes from an event.

Parameters:

  • event: string - Event name
  • callback: Function - Handler to remove

Get Methods

get.account()

Requires permission: account

Gets account information.

Returns:

Promise<{
  address: string;    // Address
  signature: string;  // Signature
  status?: string;    // Status
}>

get.balance()

Requires permission: account

Gets user's balance.

Returns: Promise<number>

get.zaddress()

Requires permission: zaddress

Gets user's Z-address.

Returns: Promise<string>

get.geolocation()

Requires permission: geolocation

Gets coordinates.

Returns:

Promise<{
  latitude: number;   // Latitude
  longitude: number;  // Longitude
}>

Permission Methods

permissions.check({ permission })

Checks for permission.

Parameters:

  • permission: string - Permission name

Returns: Promise<boolean>

permissions.request(permissions)

Requests permissions.

Parameters:

  • permissions: string[] - Array of permissions

Returns: Promise<void>

Open Methods

open.post(txid)

Opens a post.

Parameters:

  • txid: string - Post ID

open.donation(receiver)

Requires permissions: payment, account

Opens donation form.

Parameters:

  • receiver: string - Recipient address

Barteron Methods

barteron.account(data)

Requires permission: account

Manages Barteron account.

Parameters:

  • data: object - Account data

barteron.offer(data)

Requires permission: account

Creates an offer.

Parameters:

  • data: object - Offer data

barteron.removeOffer(data)

Requires permission: account

Removes an offer.

Parameters:

  • data: object - Removal data

Image Methods

images.upload(data)

Uploads an image.

Parameters:

  • data: { image: string } - Base64 image

Returns: Promise<string> - URL of uploaded image

Chat Methods

chat.getOrCreateRoom(params)

Requires permission: chat

Creates or gets a chat room.

Parameters:

{
  users: string[];      // User IDs
  parameters?: object;  // Additional parameters
}

chat.send(params)

Requires permission: chat

Sends a message.

Parameters:

{
  roomid: string;     // Room ID
  content: {          // Content
    text: string;     // Message text
    [key: string]: any; // Additional data
  }
}

chat.openRoom(roomid)

Requires permission: chat

Opens a chat room.

Parameters:

  • roomid: string - Room ID

Helper Methods

helpers.alert(message)

Requires permission: messaging

Shows a notification.

Parameters:

  • message: string - Notification text

helpers.opensettings()

Opens application settings.

helpers.registration()

Opens registration form.

helpers.userstate()

Gets user state.

Returns: Promise<object>

helpers.share(data)

Shares content.

Parameters:

{
  path: string;       // Path
  sharing: {          // Sharing parameters
    title: string;    // Title
    [key: string]: any; // Additional parameters
  }
}

Data Types

ApplicationInfo

interface ApplicationInfo {
  id: string;
  name: string;
  version: string;
  theme: string;
  margintop: number;
  production: boolean;
  project: ProjectConfig;
}

AccountInfo

interface AccountInfo {
  address: string;
  signature: string;
  status?: string;
}

ChatRoom

interface ChatRoom {
  id: string;
  users: string[];
  lastMessage?: {
    content: any;
    timestamp: number;
  };
}

Error Handling

The SDK uses Promises for asynchronous operations. Handle all errors through .catch():

sdk.get.account()
  .then(account => {
    // Handle successful result
  })
  .catch(error => {
    // Handle error
    console.error('Error:', error.message);
  });

Best Practices

  1. Initialization:

    async function initializeApp() {
      try {
        const sdk = new BastyonSdk();
        await sdk.init();
        sdk.emit('loaded');
      } catch (error) {
        console.error('Initialization error:', error);
      }
    }
  2. Permission Checking:

    async function checkAndRequestPermissions() {
      const required = ['account', 'payment'];
      
      for (const permission of required) {
        const granted = await sdk.permissions.check({ permission });
        if (!granted) {
          await sdk.permissions.request([permission]);
        }
      }
    }
  3. Event Handling:

    function setupEventListeners() {
      sdk.on('balance', handleBalanceChange);
      sdk.on('theme', handleThemeChange);
      
      // Cleanup when unmounting
      return () => {
        sdk.off('balance', handleBalanceChange);
        sdk.off('theme', handleThemeChange);
      };
    }

Additional Resources

  • Complete Documentation
  • Application Examples
  • API Reference
Last Updated:
Contributors: gked
Prev
Bastyon Mini-Apps Permissions