RTSDK
    Preparing search index...

    Class User

    Create an instance of User class with optional session credentials.

    import { User } from "utils/topiaInit.ts";

    const user = await User.create({
    profileId: "exampleProfileId",
    credentials: { interactivePublicKey: "examplePublicKey", interactiveNonce: "exampleNonce", assetId: "exampleDroppedAssetId", profileId: "exampleProfileId", visitorId: 1, urlSlug: "exampleUrlSlug" }
    });

    Hierarchy (View Summary)

    Implements

    Index

    Assets

    • Returns all assets owned by User when an email address is provided.

      Returns Promise<void | ResponseType>

      get, fetch, retrieve, list, user assets, objects

      await user.fetchAssets();
      const userAssets = user.assets;
    • Returns all platform assets.

      Returns Promise<object | ResponseType>

      Returns the platform assets or an error response.

      get, fetch, retrieve, list, platform assets, objects

      const assets = await user.fetchPlatformAssets();
      

    Avatars

    • Add a new avatar

      Parameters

      • formData: FormData

      Returns Promise<void | ResponseType>

      add, create, upload, avatar, character

      const animationMeta = {
      "emote": { "loop": false, "x": 0, "y": 0, "hideLoop": true }
      }

      const spriteSheetJSON = {
      "animations": {
      "emote": [
      "emote/1.png"
      ]
      },
      "frames": {
      "emote/1.png": {
      "frame": {
      "x": 1911,
      "y": 778,
      "w": 58,
      "h": 91
      },
      "rotated": true,
      "trimmed": true,
      "spriteSourceSize": {
      "x": 50,
      "y": 33,
      "w": 58,
      "h": 91
      },
      "sourceSize": {
      "w": 159,
      "h": 159
      }
      }
      },
      "spriteSheetTypeMeta": {
      "nameplate": {
      "x": 0,
      "y": -70
      }
      },
      "meta": {
      "image": "spriteSheets%2FTvHNjgoMkiErDNSrVqHU%2FspriteSheet.png?alt=media",
      "format": "RGBA8888",
      "size": {
      "w": 2006,
      "h": 1099
      },
      "scale": "1"
      }
      }

      const formData = new FormData();
      formData.append('animationMeta', animationMeta);
      formData.append('name', "ExampleAvatarName");
      formData.append('spriteSheetJSON', spriteSheetJSON);
      formData.append('expression_dance', expression_dance);
      formData.append('expression_emote', expression_emote);
      formData.append('expression_sit', expression_sit);
      formData.append('expression_stand', expression_stand);
      formData.append('expression_transport', expression_transport);
      formData.append('preview', preview);
      formData.append('spriteSheet', spriteSheet);
      formData.append('unityPackage', unityPackage);
      await user.uploadAvatarFiles("exampleAvatarId", formData);
    • Update avatar and sprite sheet records and upload files to existing sprite sheet and avatar storage buckets

      Parameters

      • avatarId: string

      Returns Promise<void | ResponseType>

      delete, remove, erase, destroy, eliminate, avatar

      await user.deleteAvatar("exampleAvatarId");
      
    • Returns all avatars owned by User

      Returns Promise<void | ResponseType>

      Returns the avatars or an error.

      get, fetch, retrieve, list, avatars, characters

      const avatars = await user.fetchAvatars();
      
    • Update avatar and sprite sheet records and upload files to existing sprite sheet and avatar storage buckets

      Parameters

      • avatarId: string
      • formData: FormData

      Returns Promise<void | ResponseType>

      update, modify, change, edit, avatar, character

      const animationMeta = {
      "emote": { "loop": false, "x": 0, "y": 0, "hideLoop": true }
      }

      const spriteSheetJSON = {
      "animations": {
      "emote": [
      "emote/1.png"
      ]
      },
      "frames": {
      "emote/1.png": {
      "frame": {
      "x": 1911,
      "y": 778,
      "w": 58,
      "h": 91
      },
      "rotated": true,
      "trimmed": true,
      "spriteSourceSize": {
      "x": 50,
      "y": 33,
      "w": 58,
      "h": 91
      },
      "sourceSize": {
      "w": 159,
      "h": 159
      }
      }
      },
      "spriteSheetTypeMeta": {
      "nameplate": {
      "x": 0,
      "y": -70
      }
      },
      "meta": {
      "image": "spriteSheets%2FTvHNjgoMkiErDNSrVqHU%2FspriteSheet.png?alt=media",
      "format": "RGBA8888",
      "size": {
      "w": 2006,
      "h": 1099
      },
      "scale": "1"
      }
      }

      const formData = new FormData();
      formData.append('animationMeta', animationMeta);
      formData.append('name', "ExampleAvatarName");
      formData.append('spriteSheetJSON', spriteSheetJSON);
      formData.append('expression_dance', expression_dance);
      formData.append('expression_emote', expression_emote);
      formData.append('expression_sit', expression_sit);
      formData.append('expression_stand', expression_stand);
      formData.append('expression_transport', expression_transport);
      formData.append('preview', preview);
      formData.append('spriteSheet', spriteSheet);
      formData.append('unityPackage', unityPackage);
      await user.uploadAvatarFiles("exampleAvatarId", formData);

    Data Objects

    • Retrieves the data object for a user.

      Parameters

      • OptionalappPublicKey: string
      • OptionalappJWT: string

      Returns Promise<void | ResponseType>

      Returns the data object or an error response.

      get, fetch, retrieve, load, data, object, state

      const dataObject = await user.fetchDataObject();
      
    • Increments a specific value in the data object for a user by the amount specified. Must have valid interactive credentials from a visitor in the world.

      Parameters

      • path: string
      • amount: number
      • options: {
            analytics?: AnalyticType[];
            appJWT?: string;
            appPublicKey?: string;
            lock?: { lockId: string; releaseLock?: boolean };
            sharedAppJWT?: string;
            sharedAppPublicKey?: string;
        } = {}

      Returns Promise<void | ResponseType>

      increment, increase, add, count, data, object, state

      Optionally, a lock can be provided with this request to ensure only one update happens at a time between all updates that share the same lock id

      await user.incrementDataObjectValue("key", 1);
      
    • Sets the data object for a user.

      Parameters

      • dataObject: undefined | null | object
      • options: {
            analytics?: AnalyticType[];
            appJWT?: string;
            appPublicKey?: string;
            lock?: { lockId: string; releaseLock?: boolean };
            sharedAppJWT?: string;
            sharedAppPublicKey?: string;
        } = {}

      Returns Promise<void | ResponseType>

      set, assign, store, save, data, object, state

      Optionally, a lock can be provided with this request to ensure only one update happens at a time between all updates that share the same lock id

      await user.setDataObject(
      { itemsCollected: 0 },
      {
      analytics: [{ analyticName: "resets"} ],
      lock: { lockId: `${assetId}-${itemsCollected}-${new Date(Math.round(new Date().getTime() / 10000) * 10000)}` },
      },
      );

      const { itemsCollected } = user.dataObject;
    • Updates the data object for a user.

      Parameters

      • dataObject: object
      • options: {
            analytics?: AnalyticType[];
            appJWT?: string;
            appPublicKey?: string;
            lock?: { lockId: string; releaseLock?: boolean };
            sharedAppJWT?: string;
            sharedAppPublicKey?: string;
        } = {}

      Returns Promise<void | ResponseType>

      update, modify, change, edit, alter, data, object, state

      Optionally, a lock can be provided with this request to ensure only one update happens at a time between all updates that share the same lock id

      const theme = "exampleTheme";

      await user.updateDataObject({
      [`${theme}.itemsCollectedByUser`]: { [dateKey]: { count: 1 }, total: 1 },
      });

      const { exampleTheme } = user.dataObject;

    Dropped Assets

    • Retrieves ids of all dropped assets in all worlds with a matching interactivePublicKey.

      Parameters

      • interactivePublicKey: string

      Returns Promise<object | ResponseType>

      Returns the urlSlugs of worlds where the Public Key is found or an error response.

      get, fetch, retrieve, list, interactive worlds, public key

      await user.fetchInteractiveWorldsByKey("interactivePublicKeyExample");
      const interactiveWorlds = user.interactiveWorlds;

    Expressions

    • Get expressions

      Parameters

      • __namedParameters: { getUnlockablesOnly?: boolean; name?: string }

      Returns Promise<ResponseType>

      Returns an array of expressions or an error response.

      get, fetch, retrieve, list, expressions, emotes

      await user.getExpressions({ getUnlockablesOnly: true, });
      

    Other

    credentials: undefined | InteractiveCredentials
    dataObject?: null | object
    jwt?: string
    profile?: Record<string, any>
    profileId?: null | string
    requestOptions: object
    topia: Topia
    • get adminWorlds(): { [key: string]: World }

      Returns { [key: string]: World }

    • get assets(): { [key: string]: Asset }

      Returns { [key: string]: Asset }

    • get scenes(): { [key: string]: Scene }

      Returns { [key: string]: Scene }

    • get worlds(): { [key: string]: World }

      Returns { [key: string]: World }

    • Standardized error handler for all SDK operations.

      Parameters

      • __namedParameters: { error?: unknown; message?: string; params?: object; sdkMethod?: string }

      Returns {
          data: {};
          message: string;
          method: string;
          params: object;
          sdkMethod: undefined | string;
          stack: string;
          stackTrace: Error;
          status: number;
          success: boolean;
          url: string;
      }

      Standardized error object with properties: data, message, method, params, sdkMethod, stack, status, success, url

      This method processes errors from API calls and formats them consistently across the SDK. It extracts relevant error information including:

      • HTTP status codes and response data
      • Error messages from API responses
      • Stack traces for debugging
      • Request details (URL, method, parameters)

      All errors thrown by SDK methods flow through this handler to ensure consistent error format.

      error, exception, handler, debugging, api error, http error

    • Retrieves all inventory items owned by this user and app's key.

      Returns Promise<void>

      Returns an array of InventoryItem objects.

      get, fetch, retrieve, list, inventory, items, user

      const items = await user.fetchInventoryItems();
      
    • Send an email

      Parameters

      • __namedParameters: { html: string; subject: string; to: string }

      Returns Promise<object | ResponseType>

      Returns { success: true } if the email is sent successfully or an error response.

      send, email, message, notify

      const html = `<p><b>Hello World!</b></p><p>This email is being sent from via SDK.</p>`
      await user.sendEmail({ html, subject: "Example", to: "example@email.io" });
    • Returns the configured Axios instance for making API calls to Topia's Public API.

      Returns AxiosInstance

      The configured Axios client instance with authentication headers.

      All HTTP requests to the Topia API should use this method to ensure proper authentication headers and base URL configuration are applied.

      api, axios, http, request, client, public api

    Scenes

    • Returns all scenes owned by User.

      Returns Promise<void | ResponseType>

      get, fetch, retrieve, list, user scenes

      await user.fetchScenes();
      const userScenes = user.scenes;

    Worlds

    • Retrieves all worlds a user with matching API Key is an admin in, creates a new World object for each, and creates new map of Worlds accessible via user.adminWorlds.

      Returns Promise<void | ResponseType>

      get, fetch, retrieve, list, admin worlds, user worlds

      await user.fetchAdminWorldsByKey();
      const adminWorlds = user.adminWorlds;
    • Retrieves all worlds owned by user with matching API Key, creates a new World object for each, and creates new map of Worlds accessible via user.worlds.

      Returns Promise<void | ResponseType>

      { urlSlug: new World({ apiKey, worldArgs, urlSlug }) }
      

      get, fetch, retrieve, list, user worlds

      await user.fetchWorldsByKey();
      const userWorlds = user.worlds;