RTSDK
    Preparing search index...

    Class User

    Create an instance of User class with optional session credentials.

    const user = await new User(topia, {
    profileId: 1,
    credentials: { interactiveNonce: "exampleNonce", assetId: "droppedAssetId", visitorId: 1, urlSlug: "exampleWorld" }
    });

    Hierarchy (View Summary)

    Implements

    Index

    Assets

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

      Returns Promise<void | ResponseType>

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

      Returns Promise<object | ResponseType>

      Returns the platform assets or an error response.

      const assets = await user.fetchPlatformAssets();
      

    Avatars

    • Add a new avatar

      Parameters

      • formData: FormData

      Returns Promise<void | ResponseType>

      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>

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

      Returns Promise<void | ResponseType>

      Returns the avatars or an error.

      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>

      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.

      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>

      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>

      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>

      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.

      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.

      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 }

    • Returns Promise<void | ResponseType>

    • 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;
      }

    • 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.

      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 AxiosInstance

    Scenes

    • Returns all scenes owned by User.

      Returns Promise<void | ResponseType>

      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>

      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 }) }
      
      await user.fetchWorldsByKey();
      const userWorlds = user.worlds;