tsproto-structs 0.2.0

Resource files for several TeamSpeak related data.
Documentation
[[struct]]
name = "ServerGroup"
id = [
	{ struct="ServerGroup", prop="Id" },
]
doc = "Get in notifyservergrouplist"
properties = [
	{ name="Id", type="ServerGroupId" },
	{ name="Name", type="str" },
	{ name="GroupType", type="GroupType" },
	{ name="Icon", type="IconId" },
	{ name="IsPermanent", type="bool", doc="If the group is saved to the server database" },
	{ name="SortId", type="i32" },
	{ name="NamingMode", type="GroupNamingMode" },
	{ name="NeededModifyPower", type="i32" },
	{ name="NeededMemberAddPower", type="i32" },
	{ name="NeededMemberRemovePower", type="i32", opt=true },
]

[[struct]]
name = "ChannelGroup"
id = [
	{ struct="ChannelGroup", prop="Id" },
]
doc = "Get in notifychannelgrouplist"
properties = [
	{ name="Id", type="ChannelGroupId" },
	{ name="Name", type="str" },
	{ name="GroupType", type="GroupType" },
	{ name="Icon", type="IconId" },
	{ name="IsPermanent", type="bool", doc="If the group is saved to the server database" },
	{ name="SortId", type="i32" },
	{ name="NamingMode", type="GroupNamingMode" },
	{ name="NeededModifyPower", type="i32" },
	{ name="NeededMemberAddPower", type="i32" },
	{ name="NeededMemberRemovePower", type="i32", opt=true },
]

[[struct]]
name = "OptionalChannelData"
opt = true
id = [
	{ struct="Channel", prop="Id" },
]
doc = "Get in notifychanneledited by channelgetdescription"
properties = [
	{ name="Description", type="str" },
]

[[struct]]
name = "Channel"
id = [
	{ struct="Channel", prop="Id" },
]
doc = "Get in channellist"
properties = [
	{ name="Id", type="ChannelId" },
	{ name="Guid", type="str", opt=true },
	{ name="Parent", type="ChannelId", doc="0 means root channel" },
	{ name="Name", type="str" },
	{ name="Topic", type="str", opt=true },
	{ name="Codec", type="Codec" },
	{ name="CodecQuality", type="u8", opt=true },
	{ name="MaxClients", type="MaxClients", opt=true, doc="The maximum number of clients in the channel." },
	{ name="MaxFamilyClients", type="MaxClients", opt=true, doc="Maximum number of clients in this and all child channels." },
	{ name="Order", type="ChannelId", doc="The preceding channel id." },
	{ name="ChannelType", type="ChannelType" },
	{ name="IsDefault", type="bool", opt=true, doc="Whether it is the default channel" },
	{ name="HasPassword", type="bool", opt=true, doc="Whether this channel has a password" },
	{ name="CodecLatencyFactor", type="i32", opt=true, doc="TODO Type?" },
	{ name="IsUnencrypted", type="bool", opt=true },
	{ name="DeleteDelay", type="Duration", opt=true },
	{ name="NeededTalkPower", type="i32", opt=true },
	{ name="ForcedSilence", type="bool" },
	{ name="PhoneticName", type="str", opt=true },
	{ name="Icon", type="IconId", opt=true },
	{ name="IsPrivate", type="bool", opt=true },
	{ name="Subscribed", type="bool" },
	{ name="PermissionHints", type="ChannelPermissionHint", opt=true },
	{ name="OptionalData", type="OptionalChannelData", opt=true },
]

[[struct]]
name = "OptionalClientData"
opt = true
id = [
	{ struct="Client", prop="Id" },
]
doc = "Get in notifyclientupdated by clientgetvariables"
properties = [
	{ name="Version", type="str" },
	{ name="VersionSign", type="str", opt=true },
	{ name="Platform", type="str" },
	{ name="LoginName", type="str", opt=true, doc="Set only for server queries" },
	{ name="Created", type="DateTime" },
	{ name="LastConnected", type="DateTime" },
	{ name="ConnectionsTotal", type="u32" },
	{ name="BytesUploadedMonth", type="u64" },
	{ name="BytesDownloadedMonth", type="u64" },
	{ name="BytesUploadedTotal", type="u64" },
	{ name="BytesDownloadedTotal", type="u64" },
]

[[struct]]
name = "ConnectionClientData"
opt = true
id = [
	{ struct="Client", prop="Id" },
]
doc = "Get in notifyconnectioninfo by getconnectioninfo"
properties = [
	{ name="Ping", type="Duration", opt=true },
	{ name="PingDeviation", type="Duration", opt=true },
	{ name="ConnectedTime", type="Duration", opt=true },
	{ name="ClientAddress", type="SocketAddr", opt=true, doc="Only available if we have the permission to view it" },
	{ name="PacketsSentSpeech", type="u64", opt=true },
	{ name="PacketsSentKeepalive", type="u64", opt=true },
	{ name="PacketsSentControl", type="u64", opt=true },
	{ name="BytesSentSpeech", type="u64", opt=true },
	{ name="BytesSentKeepalive", type="u64", opt=true },
	{ name="BytesSentControl", type="u64", opt=true },
	{ name="PacketsReceivedSpeech", type="u64", opt=true },
	{ name="PacketsReceivedKeepalive", type="u64", opt=true },
	{ name="PacketsReceivedControl", type="u64", opt=true },
	{ name="BytesReceivedSpeech", type="u64", opt=true },
	{ name="BytesReceivedKeepalive", type="u64", opt=true },
	{ name="BytesReceivedControl", type="u64", opt=true },
	{ name="ServerToClientPacketlossSpeech", type="f32", opt=true },
	{ name="ServerToClientPacketlossKeepalive", type="f32", opt=true },
	{ name="ServerToClientPacketlossControl", type="f32", opt=true },
	{ name="ServerToClientPacketlossTotal", type="f32", opt=true },
	{ name="ClientToServerPacketlossSpeech", type="f32" },
	{ name="ClientToServerPacketlossKeepalive", type="f32" },
	{ name="ClientToServerPacketlossControl", type="f32" },
	{ name="ClientToServerPacketlossTotal", type="f32" },
	{ name="BandwidthSentLastSecondSpeech", type="u64", opt=true },
	{ name="BandwidthSentLastSecondKeepalive", type="u64", opt=true },
	{ name="BandwidthSentLastSecondControl", type="u64", opt=true },
	{ name="BandwidthSentLastMinuteSpeech", type="u64", opt=true },
	{ name="BandwidthSentLastMinuteKeepalive", type="u64", opt=true },
	{ name="BandwidthSentLastMinuteControl", type="u64", opt=true },
	{ name="BandwidthReceivedLastSecondSpeech", type="u64", opt=true },
	{ name="BandwidthReceivedLastSecondKeepalive", type="u64", opt=true },
	{ name="BandwidthReceivedLastSecondControl", type="u64", opt=true },
	{ name="BandwidthReceivedLastMinuteSpeech", type="u64", opt=true },
	{ name="BandwidthReceivedLastMinuteKeepalive", type="u64", opt=true },
	{ name="BandwidthReceivedLastMinuteControl", type="u64", opt=true },
	{ name="FiletransferBandwidthSent", type="u64", opt=true },
	{ name="FiletransferBandwidthReceived", type="u64", opt=true },
	{ name="IdleTime", type="Duration" },
]

[[struct]]
name = "Client"
id = [
	{ struct="Client", prop="Id" },
]
doc = "Get in notifycliententerview"
properties = [
	{ name="Id", type="ClientId" },
	{ name="Channel", type="ChannelId" },
	{ name="Uid", type="Uid", opt=true, doc="Unique Identifier" },
	{ name="Name", type="str" },
	{ name="InputMuted", type="bool", doc="`true` if muted, `false` otherwise" },
	{ name="OutputMuted", type="bool", doc="`true` if muted, `false` otherwise" },
	{ name="OutputOnlyMuted", type="bool", doc="`true` if muted, `false` otherwise" },
	{ name="InputHardwareEnabled", type="bool", doc="`true` if enabled, `false` if disabled" },
	{ name="OutputHardwareEnabled", type="bool", doc="`true` if enabled, `false` if disabled" },
	{ name="TalkPowerGranted", type="bool", doc="If the client is granted talk power" },
	{ name="Metadata", type="str", doc="Set by client" },
	{ name="IsRecording", type="bool", doc="Whether the client is recording" },
	{ name="DatabaseId", type="ClientDbId" },
	{ name="ChannelGroup", type="ChannelGroupId" },
	{ name="ServerGroups", type="ServerGroupId", mod="set" },
	{ name="AwayMessage", type="str", opt=true, doc="Contains the away message if the client is away" },
	{ name="ClientType", type="ClientType", doc="If this client is a server query or not" },
	{ name="AvatarHash", type="str", doc="MD5 hash of the avatar, used to retrieve the avatar" },
	{ name="TalkPower", type="i32" },
	{ name="TalkPowerRequest", type="TalkPowerRequest", opt=true, doc="Contains a message and timestamp from the client if he requests talk power" },
	{ name="Description", type="str" },
	{ name="IsPrioritySpeaker", type="bool" },
	{ name="UnreadMessages", type="u32" },
	{ name="PhoneticName", type="str" },
	{ name="NeededServerqueryViewPower", type="i32" },
	{ name="Icon", type="IconId" },
	{ name="IsChannelCommander", type="bool" },
	{ name="CountryCode", type="str", doc="Like US, DE" },
	{ name="InheritedChannelGroupFromChannel", type="ChannelId" },
	{ name="Badges", type="str" },
	{ name="PermissionHints", type="ClientPermissionHint", opt=true },
	{ name="OptionalData", type="OptionalClientData", opt=true },
	{ name="ConnectionData", type="ConnectionClientData", opt=true },
]

[[struct]]
name = "OptionalServerData"
opt = true
id = [
]
doc = "Get by notifyserverupdated after requested by servergetvariables"
properties = [
	{ name="Uptime", type="Duration" },
	{ name="HasPassword", type="bool" },
	{ name="DefaultChannelAdminGroup", type="ChannelGroupId", doc="The channel group which will be given to channel creators" },
	{ name="MaxDownloadBandwidthTotal", type="u64" },
	{ name="MaxUploadBandwidthTotal", type="u64" },
	{ name="ComplainAutobanCount", type="u32" },
	{ name="ComplainAutobanTime", type="Duration" },
	{ name="ComplainRemoveTime", type="Duration" },
	{ name="MinClientsInChannelBeforeForcedSilence", type="u16", doc="How many clients can be in a server before silence is forced" },
	{ name="AntifloodPointsTickReduce", type="u32" },
	{ name="AntifloodPointsToCommandBlock", type="u32" },
	{ name="AntifloodPointsToIpBlock", type="u32" },
	{ name="AntifloodPointsToPluginBlock", type="u32" },
	{ name="ConnectionCountTotal", type="u64", doc="The amount of connections on this server.\n\nThis includes normal clients and server queries." },
	{ name="ChannelCount", type="u64", doc="The amount of channels on the server" },
	{ name="ClientCount", type="u16", doc="The amount of clients which are online on the server" },
	{ name="QueryCountTotal", type="u64", doc="Amount of server queries connected to the server" },
	{ name="QueryCount", type="u32", doc="Amount of server queries connected and online/visible on the server" },
	{ name="DownloadQuota", type="u64" },
	{ name="UploadQuota", type="u64" },
	{ name="BytesDownloadedMonth", type="u64" },
	{ name="BytesUploadedMonth", type="u64" },
	{ name="BytesDownloadedTotal", type="u64" },
	{ name="BytesUploadedTotal", type="u64" },
	{ name="Port", type="u16" },
	{ name="Autostart", type="bool" },
	{ name="MachineId", type="str" },
	{ name="NeededIdentitySecurityLevel", type="u8" },
	{ name="LogClient", type="bool" },
	{ name="LogQuery", type="bool" },
	{ name="LogChannel", type="bool" },
	{ name="LogPermissions", type="bool" },
	{ name="LogServer", type="bool" },
	{ name="LogFiletransfer", type="bool" },
	{ name="MinClientVersion", type="DateTime" },
	{ name="ReservedSlots", type="u16" },
	{ name="TotalPacketlossSpeech", type="f32" },
	{ name="TotalPacketlossKeepalive", type="f32" },
	{ name="TotalPacketlossControl", type="f32" },
	{ name="TotalPacketloss", type="f32" },
	{ name="TotalPing", type="Duration" },
	{ name="WeblistEnabled", type="bool" },
	{ name="MinAndroidVersion", type="DateTime", doc="TODO Maybe str" },
	{ name="MinIosVersion", type="DateTime" },
]

[[struct]]
name = "ConnectionServerData"
opt = true
id = [
]
doc = "Get by notifyserverconnectioninfo after serverrequestconnectioninfo"
properties = [
	{ name="FiletransferBandwidthSent", type="u64" },
	{ name="FiletransferBandwidthReceived", type="u64" },
	{ name="FiletransferBytesSentTotal", type="u64" },
	{ name="FiletransferBytesReceivedTotal", type="u64" },
	{ name="PacketsSentTotal", type="u64" },
	{ name="BytesSentTotal", type="u64" },
	{ name="PacketsReceivedTotal", type="u64" },
	{ name="BytesReceivedTotal", type="u64" },
	{ name="BandwidthSentLastSecondTotal", type="u64" },
	{ name="BandwidthSentLastMinuteTotal", type="u64" },
	{ name="BandwidthReceivedLastSecondTotal", type="u64" },
	{ name="BandwidthReceivedLastMinuteTotal", type="u64" },
	{ name="ConnectedTime", type="Duration" },
	{ name="PacketlossTotal", type="f32" },
	{ name="Ping", type="Duration" },
]

[[struct]]
name = "Server"
id = [
]
doc = "Get in initserver"
properties = [
	{ name="PublicKey", type="EccKeyPubP256" },
	{ name="Id", type="u64", doc="The virtual server id" },
	# `Uid` is generated from public key
	{ name="Name", type="str" },
	{ name="Nickname", type="str", opt=true },
	{ name="WelcomeMessage", type="str", doc="Welcome message when conecting to a server" },
	{ name="Platform", type="str" },
	{ name="Version", type="str" },
	{ name="MaxClients", type="u16", doc="The maximum number of clients on the server" },
	{ name="Created", type="DateTime", doc="Seems to be always 0" },
	{ name="CodecEncryptionMode", type="CodecEncryptionMode" },
	{ name="Hostmessage", type="str" },
	{ name="HostmessageMode", type="HostMessageMode" },
	{ name="DefaultServerGroup", type="ServerGroupId" },
	{ name="DefaultChannelGroup", type="ChannelGroupId" },
	{ name="HostbannerUrl", type="str" },
	{ name="HostbannerGfxUrl", type="str" },
	{ name="HostbannerGfxInterval", type="Duration", doc="How often the hostbanner should be updated" },
	{ name="PrioritySpeakerDimmModificator", type="f32" },
	{ name="HostbuttonTooltip", type="str" },
	{ name="HostbuttonUrl", type="str" },
	{ name="HostbuttonGfxUrl", type="str" },
	{ name="PhoneticName", type="str" },
	{ name="Icon", type="IconId", doc="Should be an u32, sometimes the server sends an u64 or an i32 for reasons which has to be cut to 32 bit" },
	{ name="Ips", type="IpAddr", mod="array", doc="A list of listen ips, can be empty" },
	{ name="AskForPrivilegekey", type="bool" },
	{ name="HostbannerMode", type="HostBannerMode" },
	{ name="TempChannelDefaultDeleteDelay", type="Duration" },
	{ name="ProtocolVersion", type="u16" },
	{ name="License", type="LicenseType" },
	{ name="OptionalData", type="OptionalServerData", opt=true },
	{ name="ConnectionData", type="ConnectionServerData", opt=true },
]

[[struct]]
name = "Connection"
id = [
]
doc = "A connection from our client to a server"
properties = [
	{ name="OwnClient", type="ClientId", doc="The id of our own client on the server" },
	{ name="Server", type="Server", doc="The server of this connection" },
	{ name="Clients", type="Client", mod="map", key="ClientId", doc="All clients which are visible for us" },
	{ name="Channels", type="Channel", mod="map", key="ChannelId", doc="All channels on the server" },
	{ name="ServerGroups", type="ServerGroup", mod="map", key="ServerGroupId", doc="All server groups on the server" },
	{ name="ChannelGroups", type="ChannelGroup", mod="map", key="ChannelGroupId", doc="All channel groups on the server" },
]