Skip to main content
Complete reference for all user settings-related Protocol Buffer messages.

EditProfilePhoto

Edit user’s profile photo. Request: settings.EditProfilePhotoResponse: ()
file
media.UploadedFileRef
Reference to uploaded photo file (optional, omit to remove photo)

RegisterPushSubscription

Register a push notification subscription. Request: settings.RegisterPushSubscriptionResponse: ()
subscription
oneof
required
One of: web (WebPush) or push (Push)

WebPush

endpoint
string
required
Web Push endpoint URL
p256dh
string
required
P256DH key for encryption
auth
string
required
Auth secret for encryption

Push

type
PushType
required
Type of push notification
token
string
required
Push token

PushType

Enum values:
UNKNOWN
0
Unknown type
WEB
1
Web push

UnregisterPushSubscription

Unregister the current push subscription. Request: settings.UnregisterPushSubscriptionResponse: () No parameters.

ChangeNotificationPreferences

Change notification preferences for a chat or community. Request: settings.ChangeNotificationPreferencesResponse: ()
prefs
NotifPrefs
required
Notification preference level
scope
oneof
required
One of: chat_ref (refs.ChatRef) or community_id (fixed64)

NotifPrefs

Enum values:
ALL
0
All messages
MENTIONS
1
Only mentions
NONE
2
No notifications

EditProfile

Edit user profile information. Request: settings.EditProfileResponse: ()
name
string
Display name (optional)
username
string
Username (optional)
bio
string
Bio/about text (optional)
icon
fixed64
Snowflake ID of emoji icon (optional)

GetAccount

Retrieve account information. Request: settings.GetAccountResponse: settings.Account No parameters.

Account

email
string
Email address (optional)
confirmed
bool
Whether email is confirmed
has_password
bool
Whether account has a password set

ChangePassword

Change account password. Request: settings.ChangePasswordResponse: ()
current_password
string
required
Current password
new_password
string
required
New password
revoke_sessions
bool
required
Whether to revoke all other sessions after password change

ChangeEmail

Change account email address. Request: settings.ChangeEmailResponse: ()
new_email
string
required
New email address

ChangeStatus

Change user status. Request: settings.ChangeStatusResponse: ()
status
types.UserStatus.Status
required
New status to set

Protocol Definition

syntax = "proto3";

package tangle.client.settings;

import "media.proto";
import "refs.proto";
import "types.proto";

// settings.editProfilePhoto -> ()
message EditProfilePhoto { optional media.UploadedFileRef file = 1; }

// settings.registerPushSubscription -> ()
message RegisterPushSubscription {
  enum PushType {
    UNKNOWN = 0;
    WEB = 1;
  }
  message WebPush {
    string endpoint = 1;
    string p256dh = 2;
    string auth = 3;
  }
  message Push {
    PushType type = 1;
    string token = 2;
  }

  oneof subscription {
    WebPush web = 1;
    Push push = 2;
  }
}

// settings.unregisterPushSubscription -> ()
message UnregisterPushSubscription {}

// settings.changeNotificationPreferences -> ()
message ChangeNotificationPreferences {
  enum NotifPrefs {
    ALL = 0;
    MENTIONS = 1;
    NONE = 2;
  }
  
  NotifPrefs prefs = 1;
  
  oneof scope {
    refs.ChatRef chat_ref = 2; // For channel or DM chat
    // @snowflake<Community>
    fixed64 community_id = 3; // For community-level default
  }
}

// settings.editProfile -> ()
message EditProfile {
  optional string name = 1;
  optional string username = 2;
  optional string bio = 3;
  // @snowflake<Emoji>
  optional fixed64 icon = 4;
}

// settings.getAccount -> settings.Account
message GetAccount {}

message Account {
  optional string email = 1;
  bool confirmed = 2;
  bool has_password = 3;
}

// settings.changePassword -> ()
message ChangePassword {
  string current_password = 1;
  string new_password = 2;
  bool revoke_sessions = 3; // Revoke all other sessions after password change
}

// settings.changeEmail -> ()
message ChangeEmail {
  string new_email = 1;
}

// settings.changeStatus -> ()
message ChangeStatus {
  tangle.client.types.UserStatus.Status status = 2;
}

Build docs developers (and LLMs) love