Difference between revisions of "Protocols/OSCAR"

From NINA Wiki
Jump to navigation Jump to search
(Foodgroups)
Line 8: Line 8:
 
== Foodgroups ==
 
== Foodgroups ==
  
{{:Protocols/OSCAR/Foodgroup/OSERVICE}}
+
{{:Protocols/OSCAR/Foodgroups/OSERVICE}}
  
{{:Protocols/OSCAR/Foodgroup/LOCATE}}
+
{{:Protocols/OSCAR/Foodgroups/LOCATE}}
  
{{:Protocols/OSCAR/Foodgroup/BUDDY}}
+
{{:Protocols/OSCAR/Foodgroups/BUDDY}}
  
{{:Protocols/OSCAR/Foodgroup/ICBM}}
+
{{:Protocols/OSCAR/Foodgroups/ICBM}}
  
{{:Protocols/OSCAR/Foodgroup/ADVERT}}
+
{{:Protocols/OSCAR/Foodgroups/ADVERT}}
  
{{:Protocols/OSCAR/Foodgroup/INVITE}}
+
{{:Protocols/OSCAR/Foodgroups/INVITE}}
  
{{:Protocols/OSCAR/Foodgroup/ADMIN}}
+
{{:Protocols/OSCAR/Foodgroups/ADMIN}}
  
{{:Protocols/OSCAR/Foodgroup/POPUP}}
+
{{:Protocols/OSCAR/Foodgroups/POPUP}}
  
{{:Protocols/OSCAR/Foodgroup/PD}}
+
{{:Protocols/OSCAR/Foodgroups/PD}}
  
{{:Protocols/OSCAR/Foodgroup/USER_LOOKUP}}
+
{{:Protocols/OSCAR/Foodgroups/USER_LOOKUP}}
  
{{:Protocols/OSCAR/Foodgroup/STATS}}
+
{{:Protocols/OSCAR/Foodgroups/STATS}}
  
{{:Protocols/OSCAR/Foodgroup/TRANSLATE}}
+
{{:Protocols/OSCAR/Foodgroups/TRANSLATE}}
  
{{:Protocols/OSCAR/Foodgroup/CHAT_NAV}}
+
{{:Protocols/OSCAR/Foodgroups/CHAT_NAV}}
  
{{:Protocols/OSCAR/Foodgroup/CHAT}}
+
{{:Protocols/OSCAR/Foodgroups/CHAT}}
  
{{:Protocols/OSCAR/Foodgroup/ODIR}}
+
{{:Protocols/OSCAR/Foodgroups/ODIR}}
  
{{:Protocols/OSCAR/Foodgroup/BART}}
+
{{:Protocols/OSCAR/Foodgroups/BART}}
  
{{:Protocols/OSCAR/Foodgroup/ICQCHAT_NAV}}
+
{{:Protocols/OSCAR/Foodgroups/ICQCHAT_NAV}}
  
{{:Protocols/OSCAR/Foodgroup/ICQCHAT}}
+
{{:Protocols/OSCAR/Foodgroups/ICQCHAT}}
  
{{:Protocols/OSCAR/Foodgroup/FEEDBAG}}
+
{{:Protocols/OSCAR/Foodgroups/FEEDBAG}}
  
{{:Protocols/OSCAR/Foodgroup/ICQ}}
+
{{:Protocols/OSCAR/Foodgroups/ICQ}}
  
{{:Protocols/OSCAR/Foodgroup/AEG}}
+
{{:Protocols/OSCAR/Foodgroups/AEG}}
  
{{:Protocols/OSCAR/Foodgroup/BUCP}}
+
{{:Protocols/OSCAR/Foodgroups/BUCP}}
  
{{:Protocols/OSCAR/Foodgroup/ALERT}}
+
{{:Protocols/OSCAR/Foodgroups/ALERT}}

Revision as of 07:35, 19 May 2019

OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)

OSCAR stands for "Open System for Communication in Realtime", and while originally and ironically was not open, today it is. Originally used by AOL's AIM and ICQ products, but later discontinued, it now has had a rebirth of sorts and is used by third party services.

Sometimes, inaccurately, within the ICQ community it's called "protocol v7/8/9" but this is inaccurate. Additionally the newer web-based API has been called ICQ v10 by a few. These version numbers are not accurate and typically come from the rendezvous/direct connection protocol version numbers.

OSCAR Protocol Documentation

Foodgroups

OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0001 OSERVICE All Active 4.0

The OSERVICE foodgroup contains basic operations and data types that are common across many of the foodgroups and even different servers. It is also used for service requests when the client needs to connect to a second server to perform some other action.

Special

Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO

SNACs

Subgroup Origin Name
0x0001 Any OSERVICE__ERR
This is the error SNAC for the OSERVICE foodgroup.
0x0002 Client OSERVICE__CLIENT_ONLINE
This message is sent by the client once it has initialized the host state (set preferences, Buddy Lists, locate information, capabilities) and is ready to be announced as being online by the host.
0x0003 Host OSERVICE__HOST_ONLINE
This is the very first SNAC sent from the host to the client after the FLAP signon frames are sent. It contains an array of all of the foodgroups the service supports.
0x0004 Client OSERVICE__SERVICE_REQUEST
This SNAC requests that the specified service (foodgroup) be provided to it in a way further specified by qualifying parameters.
0x0005 Host OSERVICE__SERVICE_RESPONSE
This SNAC contains information about connecting to the new server. It is the response from the server to a service request.
0x0006 Client OSERVICE__RATE_PARAMS_QUERY
This SNAC is sent by the client to query for the current rate limit parameters.
0x0007 Host OSERVICE__RATE_PARAMS_REPLY
Contains response to the OSERVICE__RATE_PARAMS_QUERY.
0x0008 Client OSERVICE__RATE_PARAMS_SUB_ADD
Subscribe to any rate parameter changes among the specified class IDs. If there was no prior subscription for a given class ID, an immediate notification will be queued.
0x0009 Client OSERVICE__RATE_DEL_PARAM_SUB
Cancels any rate parameter subscriptions for the specified class IDs.
0x000A Host OSERVICE__RATE_PARAM_CHANGE
This contains an array of class rate parameters that have changed since last query or notification.
0x000B Host OSERVICE__PAUSE_REQ
This is sent by the server when it needs to migrate the client.
0x000C Client OSERVICE__PAUSE_ACK
This is sent by the client to acknowledge the receipt and processing of a OSERVICE__PAUSE_REQ SNAC request.
0x000D Host OSERVICE__RESUME
In certain situations the server may abort a migration after having told the client to PAUSE.
0x000E Client OSERVICE__USER_INFO_QUERY
This is a query to find out one's current info. The server will send a OSERVICE__USER_INFO_UPDATE.
0x000F Host OSERVICE__USER_INFO_UPDATE
This SNAC is sent by the server whenever significant parts of a user's info change.
0x0010 Host OSERVICE__EVIL_NOTIFICATION
This is a notice that the user's evil level has changed.
0x0011 Client OSERVICE__IDLE_NOTIFICATION
This SNAC is sent by the client to inform the server of the user's idle state.
0x0012 Host OSERVICE__MIGRATE_GROUPS
This SNAC commands the client to reconnect to the server specified by the included OSERVICE__TLV_TAGS_RECONNECT_HERE TLV.
0x0013 Host OSERVICE__MOTD
Message of the day (MOTD). Often contains upgrade information for clients as well as notices about clients.
0x0014 Client OSERVICE__SET_PRIVACY_FLAGS
Set privacy flags.
0x0015 Host OSERVICE__WELL_KNOWN_URLS
Service related URLs for the client to use or provide to the user.
0x0016 Client OSERVICE__NOOP
Legacy SNAC keepalive, replaced in large part with FLAP level keepalive.
0x0017 Client OSERVICE__CLIENT_VERSIONS
Sent after OSERVICE__HOST_ONLINE, it contains the client's foodgroup version list so the host knows what functionality the client is capable of.
0x0018 Host OSERVICE__HOST_VERSIONS
The host responds to OSERVICE__CLIENT_VERSIONS with its foodgroup version list so that the client knows what this host provides and its capabilities.
0x0019 NCD OSERVICE__MAX_CONFIG_QUERY
This is not currently documented. Want to contribute?
0x001A NCD OSERVICE__MAX_CONFIG_REPLY
This is not currently documented. Want to contribute?
0x001B NCD OSERVICE__STORE_CONFIG
This is not currently documented. Want to contribute?
0x001C NCD OSERVICE__CONFIG_QUERY
This is not currently documented. Want to contribute?
0x001D NCD OSERVICE__CONFIG_REPLY
This is not currently documented. Want to contribute?
0x001E Client OSERVICE__SET_USERINFO_FIELDS
This allows the client to set some of the fields in user info that are sent to every client.
0x001F Host OSERVICE__PROBE_REQ
Client verification request.
0x0020 Client OSERVICE__PROBE_ACK
Client verification reply.
0x0021 Host OSERVICE__BART_REPLY
This reply is used to tell the client that a BART item needs to be uploaded or changed.
0x0022 Client OSERVICE__BART_QUERY2
This query sees if the BART IDs are available; OSERVICE__BART_REPLY2 is sent as a response.
0x0023 Host OSERVICE__BART_REPLY2
This SNAC is sent on initial login about items in the personality section of the Feedbag. It is also used in response to a OSERVICE__BART_QUERY2.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0002 LOCATE BOS Active 1.19

The LOCATE foodgroup allows the discovery and setting of personalization features such as signatures and away messages. The signature has been surfaced under many different names in NINA products, such as Profile, Buddy Info, and Get Info.

TLV Class: LOCATE__TAGS

These are the possible tags for the SET_INFO and GET_INFO SNACs.

Name Tag Type Notes
LOCATE__TLV_TAGS_INFO_SIG_MIME 0x01 string Signature's MIME type
LOCATE__TLV_TAGS_INFO_SIG_DATA 0x02 string Signature data, also called the get info profile
LOCATE__TLV_TAGS_INFO_UNAVAILABLE_MIME 0x03 string Away message MIME type
LOCATE__TLV_TAGS_INFO_UNAVAILABLE_DATA 0x04 string Away message data
LOCATE__TLV_TAGS_INFO_CAPABILITIES 0x05 Array of UUID Capabilities of the client
LOCATE__TLV_TAGS_INFO_CERTS 0x06 t70 Public certificates
LOCATE__TLV_TAGS_INFO_SIG_TIME 0x0A t70 Time the signature was set
LOCATE__TLV_TAGS_INFO_UNAVAILABLE_TIME 0x0B t70 Time the away message was set
LOCATE__TLV_TAGS_INFO_SUPPORT_HOST_SIG 0x0C uint8 (byte) If true, enable server based profiles
LOCATE__TLV_TAGS_INFO_HTML_INFO_TYPE 0x0D string Host based Buddy Info MIME type
LOCATE__TLV_TAGS_INFO_HTML_INFO_DATA 0x0E string Host based Buddy Info data that the client should display in a browser window

SNACs

Subgroup Origin Name
0x0001 Any LOCATE__ERR
This is the error SNAC for the LOCATE foodgroup.
0x0002 Client LOCATE__RIGHTS_QUERY
This query is sent to the server by the client to discover what some of its rights are with respect to the PD SNAC group.
0x0003 Host LOCATE__RIGHTS_REPLY
This is the response to the LOCATE__RIGHTS_QUERY SNAC.
0x0004 Client LOCATE__SET_INFO
The client may set SIG, UNAVAILABLE, and CAPABILITIES type and data tags with this SNAC.
0x0005 Client LOCATE__USER_INFO_QUERY
Request user information for profiles, capabilities, away message, and certificates.
0x0006 Host LOCATE__USER_INFO_REPLY
This is the usual response to a LOCATE__USER_INFO_QUERY2 SNAC.
0x0007 Client LOCATE__WATCHER_SUB_REQUEST
Watcher sub request.
0x0008 Host LOCATE__WATCHER_NOTIFICATION
Watcher sub notification.
0x0009 Client LOCATE__SET_DIR_INFO
Set directory info. Host will reply LOCATE__SET_DIR_REPLY.
0x000A Host LOCATE__SET_DIR_REPLY
Reply to LOCATE__SET_DIR_INFO.
0x000B Client LOCATE__GET_DIR_INFO
Get directory information for user. Host should reply with LOCATE__GET_DIR_REPLY.
0x000C Host LOCATE__GET_DIR_REPLY
Host reply to LOCATE__GET_DIR_INFO.
0x000D NCD LOCATE__GROUP_CAPABILITY_QUERY
This is not currently documented. Want to contribute?
0x000E NCD LOCATE__GROUP_CAPABILITY_REPLY
This is not currently documented. Want to contribute?
0x000F Client LOCATE__SET_KEYWORD_INFO
Set profile keywords and interests. Host should reply with LOCATE__SET_KEYWORD_REPLY.
0x0010 Host LOCATE__SET_KEYWORD_REPLY
This is the host reply to LOCATE__SET_KEYWORD_REPLY.
0x0011 Client LOCATE__GET_KEYWORD_INFO
Set profile keywords and interests. Host should reply with LOCATE__SET_KEYWORD_REPLY.
0x0012 Host LOCATE__GET_KEYWORD_REPLY
This is the host reply to LOCATE__SET_KEYWORD_REPLY.
0x0013 Client LOCATE__FIND_LIST_BY_EMAIL
This is a query sent to the server that looks up a list of users by their email address and returns one NickwInfo for each email account queried.
0x0014 Host LOCATE__FIND_LIST_REPLY
This SNAC provides the results of the LOCATE__FIND_LIST_BY_EMAIL.
0x0015 Client LOCATE__USER_INFO_QUERY2
This SNAC is sent by the client to perform the basic locate query on a user.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0003 BUDDY BOS Active 1.10

The BUDDY foodgroup is used to send clients notifications about the state of other users in their Buddy List. This can also include information about other users that the client has expressed a temporary interest in. These temporary interests are only valid for the duration of the client's session.

Subgroup Origin Name
0x0001 Any BUDDY__ERR
This is the error SNAC for the BUDDY foodgroup.
0x0002 Client BUDDY__RIGHTS_QUERY
This SNAC is optionally sent by the client to discover the client's and user's rights.
0x0003 Host BUDDY__RIGHTS_REPLY
This is the response the host sends to a BUDDY__RIGHTS_QUERY SNAC.
0x0004 Client BUDDY__ADD_BUDDIES
Add buddy or buddies to Buddy List.
0x0005 Client BUDDY__DEL_BUDDIES
Remove buddy or buddies from Buddy List.
0x0006 Client BUDDY__WATCHER_LIST_QUERY
Query for other users who have current user listed.
0x0007 Host BUDDY__WATCHER_LIST_RESPONSE
Response to BUDDY__WATCHER_LIST_QUERY.
0x0008 Client BUDDY__WATCHER_SUB_REQUEST
Watcher sub request.
0x0009 Host BUDDY__WATCHER_NOTIFICATION
Watcher sub notification.
0x000A Host BUDDY__REJECT_NOTIFICATION
This is sent in the event that one or more of the users specified in the user's Buddy List are overloaded with watchers.
0x000B Host BUDDY__ARRIVED
This notification, potentially batched, indicates that one or more users on the client's Buddy List has signed on or updated their information.
0x000C Host BUDDY__DEPARTED
This potentially batched notification indicates that one or more users on the client's Buddy List has signed off.
0x000F Client BUDDY__ADD_TEMP_BUDDIES
This SNAC adds one or more users to the client's temporary Buddy List.
0x0010 Client BUDDY__DEL_TEMP_BUDDIES
This SNAC deletes one or more users from the client's temporary Buddy List.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0004 ICBM BOS Active 1.25

ICBM, or Inter Client Basic Message, is a foodgroup focused around protocol messages that are sent between users or clients.

So now we get to the purpose of this whole thing: messaging. Instant messages are strings of ASCII codes that get sent in very-near-real-time between users of the Basic OSCAR Service (BOS). At no time does one client directly locate another client, or even know the location of any other client. All messages are sent to the message server, which then relays them to their destination client(s).

The text of a message is usually in the form of an HTML-like encoding that AOL calls "text/x-aol-rtf" (MIME format notation). For all intents and purposes, it's a subset of HTML. But, just like with HTML, you don't have to use HTML to be HTML. Sending straight ASCII text works just fine as well. The AOL-sourced AIM clients always use HTML even if you don't type or use any. They will usually append at least the <HTML>, <BODY>, and tags (and their appropriate closing tags) even if you didn't intend to use any. The server does not touch the message at all.

Sending and receiving instant messages (from now on called IMs), is really quite simple. There are some things that can make it go funny, though. I don't have all those things documented yet.

Tutorials

Datatypes and Classes

Datatype: Cookie

Name Size Notes
ICBM__COOKIE 8 byte Opaque data used to link conversations

Class: ICBM__CHANNELS

Messages sent between users are sent on a specific channel that narrow down how they should be processed and possible rate size parameters.

Name Value Notes
ICBM__CHANNEL_AOL_IM 0x01 Normal IM channel; all clients are expected to understand this channel
ICBM__CHANNEL_RENDEZVOUS 0x02 For rendezvous negotiations and sending data between clients
ICBM__CHANNEL_MIME 0x03 NOT CURRENTLY DOCUMENTED
ICBM__CHANNEL_ICQ 0x04 NOT CURRENTLY DOCUMENTED
ICBM__CHANNEL_COBROWSER 0x05 NOT CURRENTLY DOCUMENTED

Class: ICBM__FLAGS

These are flags the client uses to inform the server what kinds of features it supports for the ICBM channel.

Name Value Notes
ICBM__FLAG_CHANNEL_MSGS_ALLOWED 0x00000001 Wants ICBMs on this channel
ICBM__FLAG_MISSED_CALLS_ENABLED 0x00000002 Wants MISSED_CALLS on this channel
ICBM__FLAG_BLOCK_AUTH_MESSAGES 0x00000004 NOT CURRENTLY DOCUMENTED
ICBM__FLAG_EVENTS_ALLOWED 0x00000008 Wants CLIENT_EVENTs
ICBM__FLAG_SMS_SUPPORTED 0x00000010 Aware of sending to SMS
ICBM__FLAG_OFFLINE_MSGS_ALLOWED 0x00000100 Support offline IMs; client is capable of storing and retrieving

TLV Class: ICBM__TAGS

These are the TLV tags used in TOHOST and TOCLIENT SNACs.

Name Tag Type Notes
ICBM__TLV_TAGS_AOL_IM_DATA 0x02 Array of TLV [Class: ICBM__IM_DATA_TAGS] Message data for the IM channel only; unlike other TLVs the order of TLVs inside this tag does matter - it should be the CAPABILITIES item followed by multiple IM_TEXT items
ICBM__TLV_TAGS_REQUEST_HOST_ACK 0x03 empty Host will acknowledge this ICBM upon sending it to the destination client; this does NOT mean the destination user received it
ICBM__TLV_TAGS_AUTO_RESPONSE 0x04 empty This message is an auto response; this tag is not allowed with either the REQUEST_HOST_ACK or STORE tags
ICBM__TLV_TAGS_DATA 0x05 ICBM__IM_RENDEZVOUS Message data for all other channels
ICBM__TLV_TAGS_STORE 0x06 empty If the user is offline then store this message for delivery the next time the user logs in when possible; AIM and ICQ use complex privacy rules that control if an offline IM delivery is allowed or not
ICBM__TLV_TAGS_ICQBLOB 0x07 NOT CURRENTLY DOCUMENTED
ICBM__TLV_TAGS_AVATAR_INFO 0x08 NOT CURRENTLY DOCUMENTED
ICBM__TLV_TAGS_WANT_AVATAR 0x09 NOT CURRENTLY DOCUMENTED
ICBM__TLV_TAGS_MULTI_USER 0x0A NOT CURRENTLY DOCUMENTED
ICBM__TLV_TAGS_WANT_EVENTS 0x0B empty Used in TO_CLIENT only, it is added by the server if the sender wants client events
ICBM__TLV_TAGS_SUBSCRIPTIONS 0x0C NOT CURRENTLY DOCUMENTED
ICBM__TLV_TAGS_BART 0x0D BART__ID If desired BART items can be sent with the ICBM, the client should override the ones in USERINFO with these
ICBM__TLV_TAGS_HOST_IM_ID 0x10 u32 Unique id for host generated IMs alerting the user of some change
ICBM__TLV_TAGS_HOST_IM_ARGS 0x11 Array of string16 String arguments used to form the host generated IM
ICBM__TLV_TAGS_SEND_TIME 0x16 t70 Time when the server received the offline IM
ICBM__TLV_TAGS_FRIENDLY_NAME 0x17 string For WIMZI this is the friendly name of the anonymous user
ICBM__TLV_TAGS_ANONYMOUS 0x18 empty This is an anonymous IM
ICBM__TLV_TAGS_WIDGET_NAME 0x19 string The name of the WIMZI widget

Data Encoding

TLV Class: ICBM__IM_DATA_TAGS

These are the tags inside the IM_DATA TLV of an IM channel ICBM; order matters. For the IM_CHANNEL there should be one IM_CAPABILITIES followed by one or more IM_TEXT tags.

Name Tag Type Notes
ICBM__IM_DATA_TLV_TAGS_IM_TEXT 0x0101 ICBM__IM_SECTION The actual IM text; there can be multiple of these
ICBM__IM_DATA_TLV_TAGS_IM_CAPABILITIES 0x0501 uint8 (byte) Old client support; should just be the value 1
ICBM__IM_DATA_TLV_TAGS_MIME_ARRAY 0x0D01 uint16 (word) Short caps

Datatype: ICBM__IM_SECTION

An IM can be broken up into multiple sections and encodings. Most clients do not do this anymore and use a single section; however old AOL clients did this to save bandwidth.

Name Type Notes
encoding uint16 (word) [Class: ICBM__IM_ENCODING] Encoding of the data
language uint16 (word) Language of the data for old clients; new clients should just use 0
data blob The IM text; array of uint16 (word) if encoding is ICBM__IM_ENCODING_UNICODE, otherwise uint8 (byte)

Class: ICBM__IM_ENCODING

An IM can be encoded in the following different forms:

Name Value Notes
ICBM__IM_ENCODING_ASCII 0x00 ANSI ASCII -- ISO 646
ICBM__IM_ENCODING_UNICODE 0x02 ISO 10646.USC-2 Unicode
ICBM__IM_ENCODING_LATIN_1 0x03 ISO 8859-1

SNACs

Subgroup Origin Name
0x0001 Any ICBM__ERR
This is the error SNAC for the ICBM foodgroup.
0x0002 Client ICBM__ADD_PARAMETERS
This SNAC is typically sent prior to sending the OSERVICE__CLIENT_ONLINE so that the host is properly initialized with the clients' preferences.
0x0003 Client ICBM__DEL_PARAMETERS
These are the delete all parameters for a given channel.
0x0004 Client ICBM__PARAMETER_QUERY
This SNAC requests ICBM parameters from the host.
0x0005 Host ICBM__PARAMETER_REPLY
This SNAC is sent by the host in response to a ICBM__PARAMETER_QUERY.
0x0006 Client ICBM__CHANNEL_MSG_TOHOST
This is the basic inter-client message after which the group was named (Inter-Client Basic Messages).
0x0007 Host ICBM__CHANNEL_MSG_TOCLIENT
This is the ICBM__CHANNEL_MSG_TOHOST after it has been reformatted by the host and sent to the destination client.
0x0008 Client ICBM__EVIL_REQUEST
This requests that the specified user is sent an EVIL notification.
0x0009 Host ICBM__EVIL_REPLY
The reply tells the requester, the sender of an ICBM__EVIL_REQUEST SNAC, how much EVIL, if any, was applied to the recipient.
0x000A Host ICBM__MISSED_CALLS
When the host is unable to send one or more messages to the client, the host sends this SNAC to the client to let it know that it missed some messages ("calls").
0x000B Any ICBM__CLIENT_ERR
This error notice is one of the few SNACs that can be sent to the host and received by a client.
0x000C Host ICBM__HOST_ACK
This SNAC is sent by the host upon receipt of any ICBM__CHANNEL_MSG_TOHOST which includes the optional ICBM__TLV_TAGS_REQUEST_HOST_ACK TLV.
0x000D NCD ICBM__SIN_STORED
This is not currently documented. Want to contribute?
0x000E NCD ICBM__SIN_LIST_QUERY
This is not currently documented. Want to contribute?
0x000F NCD ICBM__SIN_LIST_REPLY
This is not currently documented. Want to contribute?
0x0010 Client ICBM__SIN_RETRIEVE
This requests ICBM__CHANNEL_MSG_TOCLIENT messages be generated for each of the stored ICBMs. Any message retrieved is deleted.
0x0011 NCD ICBM__SIN_DELETE
This is not currently documented. Want to contribute?
0x0012 NCD ICBM__NOTIFY_REQUEST
This is not currently documented. Want to contribute?
0x0013 NCD ICBM__NOTIFY_REPLY
This is not currently documented. Want to contribute?
0x0014 Any ICBM__CLIENT_EVENT
This SNAC is sent as a control message, sent by a client to inform the recipient of an event, or by the host informing of an event.
0x0017 Host ICBM__SIN_REPLY
The host successfully processed the request to retrieve all the offline messages.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0005 ADVERT ADVERT Active 1.5

Legacy ad service used for requesting ads for display.

Subgroup Origin Name
0x0001 Any ADVERT__ERR
This is the error SNAC for the ADVERT foodgroup.
0x0002 Client ADVERT__ADS_QUERY
Request available advertisements.
0x0003 Host ADVERT__ADS_REPLY
List of ads for display and their corresponding URLs.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0006 INVITE BOS Active 1.5

This is the foodgroup for inviting users to join NINA.

Subgroup Origin Name
0x0001 Any INVITE__ERR
This is the error SNAC for the INVITE foodgroup.
0x0002 Client INVITE__REQUEST_QUERY
This SNAC contains a request to send an invite to join NINA to a given email address.
0x0003 Host INVITE__REQUEST_REPLY
This SNAC is sent in reply to a successful INVITE__REQUEST_QUERY.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0007 ADMIN ADMIN Active 1.9

Service for client control of passwords, screen name formatting, email address, and account confirmation.

Info TLVs

Type Length Location Value
0x0001 n bytes Subtypes 0x0003 and 0x0005 Your screen name with your specified formatting.
0x0002 n bytes Subtypes 0x0003 and 0x0005 New password for your account. Note: When you change this, you get an empty 0x0002 TLV as a reply, but the change is still made.
0x0004 n bytes Subtypes 0x0003 and 0x0005 The URL htp://www.aol.com Sent when you make an info change and it fails?
0x0008 2 bytes Subtypes 0x0003 and 0x0005

An error code

  • 0x0001 if unable to format the screen name because it has been changed.
  • 0x0006 if unable to format the screen name because it ends in a space.
  • 0x000b if unable to format the screen name as specified because it was too long.
  • 0x0012 if unable to display the requested info.
  • 0x0015 if unable to display email address because this is an ICQ account?. Because this account has no email address associated with it?
  • 0x001d if unable to change email address because you have already tried to change the email address for this screen name, and that request has not timed out (72 hours).
  • 0x0021 if unable to change email address because the email address has too many screen names associated with it.
  • 0x0023 if unable to change email address because the domain name is "invalid."
0x0011 n bytes Subtypes 0x0003 and 0x0005 The email address associated with your account. Note: When you change this, you get an empty 0x0011 TLV as a reply, but the change is still made. You can do an info request with the empty 0x0011 TLV and they'll give you your email address (which is probably still your old email address, since you have to reply to an email they send you before your email address is actually changed).
0x0012 n bytes Subtypes 0x0003 and 0x0005 Old password for your account.
0x0013 n bytes Subtypes 0x0003 and 0x0005 Unclear "0x0003."
Subgroup Origin Name
0x0001 Any ADMIN__ERR
This is the error SNAC for the ADMIN foodgroup.
0x0002 Client ADMIN__INFO_QUERY
Request account information. Host should reply with ADMIN__INFO_REPLY.
0x0003 Host ADMIN__INFO_REPLY
Reply to ADMIN__INFO_QUERY, may contain either account information or an error code and/or URL on failure.
0x0004 Client ADMIN__INFO_CHANGE_REQUEST
Change information request. Information may include screenname format, password, email address, and so on. Host will reply with ADMIN__INFO_CHANGE_REPLY.
0x0005 Host ADMIN__INFO_CHANGE_REPLY
This is the response for ADMIN__INFO_CHANGE_REQUEST and may either confirm changes or contain an error code and/or URL.
0x0006 Client ADMIN__ACCT_CONFIRM_REQUEST
Request to confirm account via email.
0x0007 Host ADMIN__ACCT_CONFIRM_REPLY
Response to ADMIN__ACCT_CONFIRM_REQUEST, may contain status change, pending email confirmation notice, or error message.
0x0008 Client ADMIN__ACCT_DELETE_REQUEST
Account delete request. Host will reply with ADMIN__ACCT_DELETE_REPLY.
0x0009 Host ADMIN__ACCT_DELETE_REPLY
The account delete reply will either contain confirmation or an error code and/or URL.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0008 POPUP BOS Active 1.1

Displays popup notifications from service.

Subgroup Origin Name
0x0001 Any POPUP__ERR
This is the error SNAC for the POPUP foodgroup.
0x0002 Host POPUP__DISPLAY
Display popup message on client. Older ICQ clients may receive an IM instead.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0009 PD BOS Active 1.9

The PD foodgroup is used for the control of Permit/Deny settings for the user.

Class: PD Entries

A single or multiple entries may be sent at the same time in the method demonstrated below.

Name Length Value
Username #1 Length uint8 (byte) xx
Username #1 string xx ...
Username #N Length uint8 (byte) xx
Username #N string xx ...

SNACs

Subgroup Origin Name
0x0001 Any PD__ERR
This is the error SNAC for the PD foodgroup.
0x0002 Client PD__RIGHTS_QUERY
This is a query sent to the host by the client to discover what some of its rights are with respect to the PD SNAC group.
0x0003 Host PD__RIGHTS_REPLY
This SNAC is the response to the PD__RIGHTS_QUERY SNAC.
0x0004 Client PD__SET_GROUP_PERMIT_MASK
Set group permission mask.
0x0005 Client PD__ADD_PERM_LIST_ENTRIES
Add user to permission/visible list. Users on this list will be able to see the client, even if it is invisible or has default-deny enabled.
0x0006 Client PD__DEL_PERM_LIST_ENTRIES
Delete user from permission/visible list.
0x0007 Client PD__ADD_DENY_LIST_ENTRIES
Add user to deny/invisible list. Users on this list will not see you online. Note that it can be overridden by PD__ADD_TEMP_PERMIT_LIST_ENTRIES.
0x0008 Client PD__DEL_DENY_LIST_ENTRIES
Delete user from deny/invisible list.
0x0009 Host PD__BOS_ERR
Error notification for permissions on the BOS host.
0x000A Client PD__ADD_TEMP_PERMIT_LIST_ENTRIES
This SNAC adds one or more entries to the temporary permit/visible list. A username in this list will bypass the Feedbag permit/deny lists and always be permitted.
0x000B Client PD__DEL_TEMP_PERMIT_LIST_ENTRIES
This SNAC deletes one or more entries in the temporary permit list.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x000A USER_LOOKUP BOS Active 1.9

Look up users based on entered profile details, interests, and other user-provided details.

Subgroup Origin Name
0x0001 Any USER_LOOKUP__ERR
This is the error SNAC for the USER_LOOKUP foodgroup.
0x0002 Client USER_LOOKUP__FIND_BY_EMAIL
Search for other users by email address.
0x0003 Host USER_LOOKUP__FIND_REPLY
Response to search queries.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x000B STATS BOS Active 1.13

Client-reported usage stats and other system information such as OS version.

Subgroup Origin Name
0x0001 Any STATS__ERR
This is the error SNAC for the STATS foodgroup.
0x0002 Host STATS__SET_MIN_REPORT_INTERVAL
Set client's minimum report interval.
0x0003 Client STATS__REPORT_EVENTS
Client event report. Typically this contains local system information.
0x0004 Host STATS__REPORT_ACK
Host acknowledgement of STATS__REPORT_EVENTS.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x000C TRANSLATE BOS Active 1.3

Legacy translation service for older AIM clients.

Subgroup Origin Name
0x0001 Any TRANSLATE__ERR
This is the error SNAC for the TRANSLATE foodgroup.
0x0002 Client TRANSLATE__REQUEST
Client translate request.
0x0003 Host TRANSLATE__REPLY
Host response to TRANSLATE__REQUEST.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x000D CHAT_NAV CHAT Active 1.8

Chat navigation and invitation service.

Subgroup Origin Name
0x0001 Any CHAT_NAV__ERR
This is the error SNAC for the CHAT_NAV foodgroup.
0x0002 Client CHAT_NAV__REQUEST_CHAT_RIGHTS
Request client chat rights and limits.
0x0003 Client CHAT_NAV__REQUEST_EXCHANGE_INFO
Request chat exchange information.
0x0004 Client CHAT_NAV__REQUEST_ROOM_INFO
Request room information.
0x0005 Client CHAT_NAV__REQUEST_MORE_ROOM_INFO
Request extended room information.
0x0006 Client CHAT_NAV__REQUEST_OCCUPANT_LIST
Request occupant list of other users in the chat.
0x0007 Client CHAT_NAV__SEARCH_FOR_ROOM
Search for a specific room in a given public exchange.
0x0008 Client CHAT_NAV__CREATE_ROOM
Create room instance.
0x0009 Host CHAT_NAV__NAV_INFO
Navigation information response for requested information.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x000E CHAT CHAT Active 1.10

Chat service for all messages, joins, departures, room information, etc.

Subgroup Origin Name
0x0001 Any CHAT__ERR
This is the error SNAC for the CHAT foodgroup.
0x0002 Host CHAT__ROOM_INFO_UPDATE
Room information update.
0x0003 Host CHAT__USERS_JOINED
User or users join room notification.
0x0004 Host CHAT__USERS_LEFT
User or users left room notification.
0x0005 Client CHAT__CHANNEL_MSG_TOHOST
Channel message from client.
0x0006 Host CHAT__CHANNEL_MSG_TOCLIENT
Channel message to client.
0x0007 Client CHAT__EVIL_REQUEST
Chat evil request.
0x0008 Host CHAT__EVIL_REPLY
Chat evil reply.
0x0009 Any CHAT__CLIENT_ERR
Error from client or host related to chat.
0x000A Host CHAT__PAUSE_ROOM_REQ
Host request to client to pause all SNACs to chat.
0x000B Client CHAT__PAUSE_ROOM_ACK
Client confirmation of CHAT__PAUSE_ROOM_REQ.
0x000C Host CHAT__RESUME_ROOM
Host notification to client to resume SNACs.
0x000D Client CHAT__SHOW_MY_ROW
This is not currently documented. Want to contribute?
0x000E Client CHAT__SHOW_ROW_BY_USERNAME
This is not currently documented. Want to contribute?
0x000F Client CHAT__SHOW_ROW_BY_NUMBER
This is not currently documented. Want to contribute?
0x0010 Client CHAT__SHOW_ROW_BY_NAME
This is not currently documented. Want to contribute?
0x0011 NCD CHAT__ROW_INFO
This is not currently documented. Want to contribute?
0x0012 Client CHAT__LIST_ROWS
This is not currently documented. Want to contribute?
0x0013 NCD CHAT__ROW_LIST_INFO
This is not currently documented. Want to contribute?
0x0014 NCD CHAT__MORE_ROWS
This is not currently documented.
0x0015 Client CHAT__MOVE_TO_ROW
This is not currently documented.
0x0016 Client CHAT__TOGGLE_CHAT
This is not currently documented.
0x0017 Client CHAT__SEND_QUESTION
This is not currently documented.
0x0018 Client CHAT__SEND_COMMENT
This is not currently documented.
0x0019 Client CHAT__TALLY_VOTE
This is not currently documented.
0x001A Client CHAT__ACCEPT_BID
This is not currently documented.
0x001B Client CHAT__SEND_INVITE
This is not currently documented.
0x001C Client CHAT__DECLINE_INVITE
This is not currently documented.
0x001D Client CHAT__ACCEPT_INVITE
This is not currently documented.
0x001E NCD CHAT__NOTIFY_MESSAGE
This is not currently documented.
0x001F NCD CHAT__GOTO_ROW
This is not currently documented.
0x0020 Host CHAT__STAGE_USER_JOIN
This is not currently documented.
0x0021 Host CHAT__STAGE_USER_LEFT
This is not currently documented.
0x0022 NCD CHAT__UNNAMED_SNAC_22
This is not currently documented.
0x0023 NCD CHAT__CLOSE
This is not currently documented.
0x0024 Client CHAT__USER_BAN
This is not currently documented.
0x0025 Client CHAT__USER_UNBAN
This is not currently documented.
0x0026 Host CHAT__JOINED
This is not currently documented.
0x0027 NCD CHAT__UNNAMED_SNAC_27
This is not currently documented.
0x0028 NCD CHAT__UNNAMED_SNAC_28
This is not currently documented.
0x0029 NCD CHAT__UNNAMED_SNAC_29
This is not currently documented.
0x0030 Host CHAT__ROOM_INFO_OWNER
This is not currently documented.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x000F ODIR BOS Active 1.8

Notes (TLVs from another): User directory search, related to the USER_LOOKUP service, but allowing users to provide greater profile detail.

Subgroup Origin Name
0x0001 Any ODIR__ERR
This is the error SNAC for the ODIR foodgroup.
0x0002 Client ODIR__INFO_QUERY
Client request to search for user.
0x0003 Host ODIR__INFO_REPLY
Host response to ODIR__INFO_QUERY with list of found users or error code and/or URL.
0x0004 Client ODIR__KEYWORD_LIST_QUERY
Request a list of keywords, or interests, associated with user.
0x0005 Host ODIR__KEYWORD_LIST_REPLY
Host response to ODIR__KEYWORD_LIST_QUERY with list or error code and/or URL.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0010 BART BOS Active 1.9

The Buddy Art, or BART, server provides access to the client for downloading image, sound, and xml assets for expressions for their buddies and themselves. Examples of BART items include Buddy icons, Buddy arrival sounds, and immersive wallpapers.

Introduction

For some items, the actual assets are downloaded using the BART system and in other cases, just descriptive XML files are used. Once a BART item is downloaded, it is basically cached FOREVER by the client, so updating requires publishing a new BART item. This is especially important when the BART item is an asset. When the BART item is a descriptive XML file, only the XML file is cached forever and any assets it refers to can use different caching schemes determined by the client.

All BART items are represented by a BART ID. A BART ID is a 5 byte to 20 byte binary value that represents the BART item and is sent around by the client and the servers. One simple way to think of the BART ID is as a compressed URL. When the client receives a BART ID, either from another client or from the server, it checks its cache or uses the BART server to download the item. The BART server also has a cache and connects to the various partners to download the assets if it does not have them. It is expected that each BART ID points to a unique item. The backend will collapse duplicate items into a single ID. The BART server also will store custom items for some asset types.

Having a Buddy icon with opaque data of 0x0201d20472 means the user has explicitly chosen to have no Buddy icon. This is different then not having a Buddy icon. This ID should be treated specially and does not need to be fetched from BART (although BART will return an empty GIF). This was done so clients could tell when they upgraded from old style Buddy icons to BART Buddy icons. This special ID should NOT be used for other BART types.

SNACs

Subgroup Origin Name
0x0001 Any BART__ERR
This is the error SNAC for the BART foodgroup.
0x0002 Client BART__UPLOAD_QUERY
This SNAC uploads a custom item to the BART host. Only certain types allow custom items.
0x0003 Host BART__UPLOAD_REPLY
These are the results for an item requested with BART__UPLOAD_QUERY.
0x0004 Client BART__DOWNLOAD_QUERY
Legacy request buddy icon from host.
0x0005 Host BART__DOWNLOAD_REPLY
Legacy host response to a buddy icon request.
0x0006 Client BART__DOWNLOAD2_QUERY
This SNAC downloads an asset from the BART host.
0x0007 Host BART__DOWNLOAD2_REPLY
These are the results for an item requested with BART__DOWNLOAD2_QUERY.

BART_ID

Datatype: BART__ID

This represents a BART asset and can be thought of as a "Tiny URL" equivalent. Some BART IDs contain the data while some are pointers to the data and must be downloaded using the BART server.

Name Type Notes
type uint16 (word) [Class: BART__ID_TYPES] Kind of asset this BART ID represents
flags uint8 (byte) [Class: Protocols/OSCAR/Foodgroups/BART#Class:_BART_ID_FLAGS BART__ID_FLAGS] Any flags associated with the BART item; DATA is important since it means the BART__ID holds the data and the BART server is not needed
len uint8 (byte) Length of the opaque data
opaque Array of uint8 (byte) length len Opaque data; if the DATA flag is set then this is the actual data to use

Class: BART__ID_TYPES

These are all the different BART ID types that are known about and their restrictions.

Name Value Notes
BART__TYPES_BUDDY_ICON_SMALL 0x00 GIF/JPG/BMP, <= 32 pixels and 2k
BART__TYPES_BUDDY_ICON 0x01 GIF/JPG/BMP, <= 64 pixels and 7k
BART__TYPES_STATUS_STR 0x02 StringTLV format; DATA flag is always set
BART__TYPES_ARRIVE_SOUND 0x03 WAV/MP3/MID, <= 10K
BART__TYPES_RICH_NAME 0x04 byte array of rich text codes; DATA flag is always set
BART__TYPES_SUPER_ICON 0x05 XML
BART__TYPES_RADIO_STATION 0x06 Opaque struct; DATA flag is always set
BART__TYPES_SUPER_ICON_TRIGGER 0x07 NOT CURRENTLY DOCUMENTED
BART__TYPES_STATUS_TEXT_LINK 0x09 NOT CURRENTLY DOCUMENTED
BART__TYPES_LOCATION 0x0B NOT CURRENTLY DOCUMENTED
BART__TYPES_BUDDY_ICON_BIG 0x0C SWF
BART__TYPES_STATUS_TEXT_TIMESTAMP 0x0D Time when the status string is set
BART__TYPES_CURRENT_AVTRACK 0x0F XML file; Data flag should not be set
BART__TYPES_DEPART_SOUND 0x60 WAV/MP3/MID, <= 10K
BART__TYPES_IM_BACKGROUND 0x80 NOT CURRENTLY DOCUMENTED
BART__TYPES_IM_CHROME 0x81 GIF/JPG/BMP wallpaper
BART__TYPES_IM_SKIN 0x82 NOT CURRENTLY DOCUMENTED
BART__TYPES_IM_SOUND 0x83 WAV/MP3, <= 10K
BART__TYPES_BADGE 0x84 NOT CURRENTLY DOCUMENTED
BART__TYPES_BADGE_URL 0x85 NOT CURRENTLY DOCUMENTED
BART__TYPES_IM_INITIAL_SOUND 0x86 NOT CURRENTLY DOCUMENTED
BART__TYPES_FLASH_WALLPAPER 0x88 XML
BART__TYPES_IMMERSIVE_WALLPAPER 0x89 Immersive Expressions
BART__TYPES_BUDDYLIST_BACKGROUND 0x100 NOT CURRENTLY DOCUMENTED
BART__TYPES_BUDDYLIST_IMAGE 0x101 NOT CURRENTLY DOCUMENTED
BART__TYPES_BUDDYLIST_SKIN 0x102 NOT CURRENTLY DOCUMENTED
BART__TYPES_SMILEY_SET 0x400 Set of default Emoticons
BART__TYPES_ENCR_CERT_CHAIN 0x402 Cert chain for encryption certs
BART__TYPES_SIGN_CERT_CHAIN 0x403 Cert chain for signing certs
BART__TYPES_GATEWAY_CERT 0x404 Cert for enterprise gateway

Class: BART__ID_FLAGS

These are the flags used by the client to detect how the BART ID should be processed.

Name Value Notes
BART__FLAGS_KNOWN 0x00 NOT CURRENTLY DOCUMENTED
BART__FLAGS_CUSTOM 0x01 This is a custom blob; the opaque data will also be 16 bytes
BART__FLAGS_URL 0x02 Contains URL to BART content
BART__FLAGS_DATA 0x04 The opaque field is really data the client knows how to process; these items do not need to be downloaded from BART
BART__FLAGS_UNKNOWN 0x40 Used in OSERVICE__BART_REPLY; BART does not know about this ID, please upload
BART__FLAGS_REDIRECT 0x80 Used in OSERVICE__BART_REPLY; BART says use this ID instead for the matching type
BART__FLAGS_BANNED 0xC0 BART is disallowed by hash

For Query Responses

Datatype: BART__QUERY_REPLY_ID

This links a queried BART ID with an error code and a replyId.

Name Type Notes
queryId BART__ID Initial ID that is queried or used
code uint8 (byte) [Class: BART__REPLY_CODES] Result code of the query
replyId BART__ID ID that will be used; might be different then queryId

Class: BART__REPLY_CODES

These are the result codes of uploads, downloads, and queries.

Name Value Notes
BART__REPLY_CODES_SUCCESS 0x00 Operation was a success
BART__REPLY_CODES_INVALID 0x01 ID is malformed
BART__REPLY_CODES_NOCUSTOM 0x02 Custom blobs are not allowed for this type
BART__REPLY_CODES_TOSMALL 0x03 Item uploaded is too small for this type
BART__REPLY_CODES_TOBIG 0x04 Item uploaded is too big for this type
BART__REPLY_CODES_INVALIDTYPE 0x05 Item uploaded is the wrong type
BART__REPLY_CODES_BANNED 0x06 Item uploaded has been banned
BART__REPLY_CODES_NOTFOUND 0x07 Item downloaded was not found

Datatype: BART__ID_TO_USERNAME

This links a BART ID and a username.

Name Type Notes
username string08 User who is using the asset
numIds uint8 (byte) Number of assets being requested
ids Array of BART__ID length numIds BART IDs to fetch


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0011 ICQCHAT_NAV CHAT Active 1.1

ICQ front end to the CHAT_NAV service.

Subgroup Origin Name
0x0001 Any ICQCHAT_NAV__ERR
This is the error SNAC for the ICQCHAT_NAV foodgroup.
0x0002 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST CHAT RIGHTS/Origin ICQCHAT_NAV__REQUEST_CHAT_RIGHTS
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST CHAT RIGHTS/Description
0x0003 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST EXCHANGE INFO/Origin ICQCHAT_NAV__REQUEST_EXCHANGE_INFO
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST EXCHANGE INFO/Description
0x0004 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST ROOM INFO/Origin ICQCHAT_NAV__REQUEST_ROOM_INFO
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST ROOM INFO/Description
0x0005 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST MORE ROOM INFO/Origin ICQCHAT_NAV__REQUEST_MORE_ROOM_INFO
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST MORE ROOM INFO/Description
0x0006 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST OCCUPANT LIST/Origin ICQCHAT_NAV__REQUEST_OCCUPANT_LIST
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV REQUEST OCCUPANT LIST/Description
0x0007 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV SEARCH FOR ROOM/Origin ICQCHAT_NAV__SEARCH_FOR_ROOM
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV SEARCH FOR ROOM/Description
0x0008 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV CREATE ROOM/Origin ICQCHAT_NAV__CREATE_ROOM
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV CREATE ROOM/Description
0x0009 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV NAV INFO/Origin ICQCHAT_NAV__NAV_INFO
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV NAV INFO/Description
0x000A Template:Protocols/OSCAR/SNAC/ICQCHAT NAV POPULAR ROOMS QUERY/Origin ICQCHAT_NAV__POPULAR_ROOMS_QUERY
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV POPULAR ROOMS QUERY/Description
0x000B Template:Protocols/OSCAR/SNAC/ICQCHAT NAV POPULAR ROOMS REPLY/Origin ICQCHAT_NAV__POPULAR_ROOMS_REPLY
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV POPULAR ROOMS REPLY/Description
0x000C Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER DECLARE/Origin ICQCHAT_NAV__GROUP_LEADER_DECLARE
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER DECLARE/Description
0x000D Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER RESIGN/Origin ICQCHAT_NAV__GROUP_LEADER_RESIGN
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER RESIGN/Description
0x000E Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER QUIT/Origin ICQCHAT_NAV__GROUP_LEADER_QUIT
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER QUIT/Description
0x000F Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER JOIN QUERY/Origin ICQCHAT_NAV__GROUP_LEADER_JOIN_QUERY
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER JOIN QUERY/Description
0x0010 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER JOIN REPLY/Origin ICQCHAT_NAV__GROUP_LEADER_JOIN_REPLY
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER JOIN REPLY/Description
0x0011 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER LEAVE/Origin ICQCHAT_NAV__GROUP_LEADER_LEAVE
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER LEAVE/Description
0x0012 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER REPORT JOINED/Origin ICQCHAT_NAV__GROUP_LEADER_REPORT_JOINED
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER REPORT JOINED/Description
0x0013 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER REPORT LEFT/Origin ICQCHAT_NAV__GROUP_LEADER_REPORT_LEFT
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV GROUP LEADER REPORT LEFT/Description
0x0014 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV POPULAR DOMAINS QUERY/Origin ICQCHAT_NAV__POPULAR_DOMAINS_QUERY
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV POPULAR DOMAINS QUERY/Description
0x0015 Template:Protocols/OSCAR/SNAC/ICQCHAT NAV POPULAR DOMAINS REPLY/Origin ICQCHAT_NAV__POPULAR_DOMAINS_REPLY
Template:Protocols/OSCAR/SNAC/ICQCHAT NAV POPULAR DOMAINS REPLY/Description


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0012 ICQCHAT CHAT Active 1.1

ICQ front end to the CHAT service, but with ICQ-specific details not available on AIM.

Subgroup Origin Name
0x0001 Any ICQCHAT__ERR
This is the error SNAC for the ICQCHAT foodgroup.
0x0002 Template:Protocols/OSCAR/SNAC/ICQCHAT ROOM INFO UPDATE/Origin ICQCHAT__ROOM_INFO_UPDATE
Template:Protocols/OSCAR/SNAC/ICQCHAT ROOM INFO UPDATE/Description
0x0003 Template:Protocols/OSCAR/SNAC/ICQCHAT USERS JOINED/Origin ICQCHAT__USERS_JOINED
Template:Protocols/OSCAR/SNAC/ICQCHAT USERS JOINED/Description
0x0004 Template:Protocols/OSCAR/SNAC/ICQCHAT USERS LEFT/Origin ICQCHAT__USERS_LEFT
Template:Protocols/OSCAR/SNAC/ICQCHAT USERS LEFT/Description
0x0005 Template:Protocols/OSCAR/SNAC/ICQCHAT CHANNEL MSG TOHOST/Origin ICQCHAT__CHANNEL_MSG_TOHOST
Template:Protocols/OSCAR/SNAC/ICQCHAT CHANNEL MSG TOHOST/Description
0x0006 Template:Protocols/OSCAR/SNAC/ICQCHAT CHANNEL MSG TOCLIENT/Origin ICQCHAT__CHANNEL_MSG_TOCLIENT
Template:Protocols/OSCAR/SNAC/ICQCHAT CHANNEL MSG TOCLIENT/Description
0x0007 Template:Protocols/OSCAR/SNAC/ICQCHAT EVIL REQUEST/Origin ICQCHAT__EVIL_REQUEST
Template:Protocols/OSCAR/SNAC/ICQCHAT EVIL REQUEST/Description
0x0008 Template:Protocols/OSCAR/SNAC/ICQCHAT EVIL REPLY/Origin ICQCHAT__EVIL_REPLY
Template:Protocols/OSCAR/SNAC/ICQCHAT EVIL REPLY/Description
0x0009 Template:Protocols/OSCAR/SNAC/ICQCHAT CLIENT ERR/Origin ICQCHAT__CLIENT_ERR
Template:Protocols/OSCAR/SNAC/ICQCHAT CLIENT ERR/Description
0x000A Template:Protocols/OSCAR/SNAC/ICQCHAT PAUSE ROOM REQ/Origin ICQCHAT__PAUSE_ROOM_REQ
Template:Protocols/OSCAR/SNAC/ICQCHAT PAUSE ROOM REQ/Description
0x000B Template:Protocols/OSCAR/SNAC/ICQCHAT PAUSE ROOM ACK/Origin ICQCHAT__PAUSE_ROOM_ACK
Template:Protocols/OSCAR/SNAC/ICQCHAT PAUSE ROOM ACK/Description
0x000C Template:Protocols/OSCAR/SNAC/ICQCHAT RESUME ROOM/Origin ICQCHAT__RESUME_ROOM
Template:Protocols/OSCAR/SNAC/ICQCHAT RESUME ROOM/Description
0x000D Template:Protocols/OSCAR/SNAC/ICQCHAT SET ICQUSER INFO/Origin ICQCHAT__SET_ICQUSER_INFO
Template:Protocols/OSCAR/SNAC/ICQCHAT SET ICQUSER INFO/Description
0x000E Template:Protocols/OSCAR/SNAC/ICQCHAT CHANGE ICQSTATUS/Origin ICQCHAT__CHANGE_ICQSTATUS
Template:Protocols/OSCAR/SNAC/ICQCHAT CHANGE ICQSTATUS/Description
0x000F Template:Protocols/OSCAR/SNAC/ICQCHAT SEND FULL INFO/Origin ICQCHAT__SEND_FULL_INFO
Template:Protocols/OSCAR/SNAC/ICQCHAT SEND FULL INFO/Description
0x0010 Template:Protocols/OSCAR/SNAC/ICQCHAT INTERESTS LIST QUERY/Origin ICQCHAT__INTERESTS_LIST_QUERY
Template:Protocols/OSCAR/SNAC/ICQCHAT INTERESTS LIST QUERY/Description
0x0011 Template:Protocols/OSCAR/SNAC/ICQCHAT INTERESTS LIST REPLY/Origin ICQCHAT__INTERESTS_LIST_REPLY
Template:Protocols/OSCAR/SNAC/ICQCHAT INTERESTS LIST REPLY/Description


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0013 FEEDBAG BOS Active 4.0

A Feedbag is the stored Buddy List and server based preferences for an AIM user. The client has direct access to manipulate the Feedbag in any way it sees fit, including corrupting it. The server has some checks in place to prevent destruction, but a client developer must be careful not to corrupt things.

ICQ authorization sequence

Items

Feedbag store items are highly complex and have been separated into their own page.

See More

SNACs

Subgroup Origin Name
0x0001 Any FEEDBAG__ERR
This is the error SNAC for the FEEDBAG foodgroup.
0x0002 Client FEEDBAG__RIGHTS_QUERY
This SNAC issues a query to the host for the client's Feedbag rights and to let the system know what kind of Feedbag support it wants.
0x0003 Host FEEDBAG__RIGHTS_REPLY
This is the response to the FEEDBAG__RIGHTS_QUERY SNAC.
0x0004 Client FEEDBAG__QUERY
This SNAC is sent to query the Feedbag data stored on the host.
0x0005 Client FEEDBAG__QUERY_IF_MODIFIED
Similar to FEEDBAG__QUERY except contains a Unix epoch to check against in order to only send if modified.
0x0006 Host FEEDBAG__REPLY
This is the reply to FEEDBAG_QUERY.
0x0007 Client FEEDBAG__USE
Directs the host to use the specified stored Feedbag information.
0x0008 Any FEEDBAG__INSERT_ITEM
When this SNAC is sent to the host, the client is requesting that one or more new items are added to the Feedbag.
0x0009 Any FEEDBAG__UPDATE_ITEM
When this SNAC is sent to the host, the client is requesting to update one or more items.
0x000A Any FEEDBAG__DELETE_ITEM
When this SNAC is sent to the host, the client is requesting that one or more items be deleted from the Feedbag.
0x000B NCD FEEDBAG__INSERT_CLASS
This is not currently documented.
0x000C NCD FEEDBAG__UPDATE_CLASS
This is not currently documented.
0x000D NCD FEEDBAG__DELETE_CLASS
This is not currently documented.
0x000E Host FEEDBAG__STATUS
These are the results of one of the insert/update/delete item SNACs from above.
0x000F Host FEEDBAG__REPLY_NOT_MODIFIED
Response to client if Feedbag data is unmodified.
0x0010 NCD FEEDBAG__DELETE_USER
This is not currently documented.
0x0011 NCD FEEDBAG__START_CLUSTER
The cluster SNACs bracket a set of transactions that should be handled by clients as a group to avoid "flashing" the user's screen.
0x0012 NCD FEEDBAG__END_CLUSTER
This SNAC ends the data burst started with START_CLUSTER. See FEEDBAG__START_CLUSTER.
0x0013 Client FEEDBAG__AUTHORIZE_BUDDY
Grant authorization to another user.
0x0014 Client FEEDBAG__PRE_AUTHORIZE_BUDDY
Pre-authorize another user.
0x0015 Host FEEDBAG__PRE_AUTHORIZED_BUDDY
Host notification to a user that they have been pre-authorized.
0x0016 Client FEEDBAG__REMOVE_ME
Delete current user from another user's Buddy List.
0x0017 Client FEEDBAG__REMOVE_ME2
This is not currently documented.
0x0018 Client FEEDBAG__REQUEST_AUTHORIZE_TO_HOST
Send authorization request.
0x0019 Host FEEDBAG__REQUEST_AUTHORIZE_TO_CLIENT
Host notice of authorization request from another user.
0x001A Client FEEDBAG__RESPOND_AUTHORIZE_TO_HOST
Send authorization response to FEEDBAG__REQUEST_AUTHORIZE_TO_CLIENT.
0x001B Host FEEDBAG__RESPOND_AUTHORIZE_TO_CLIENT
Host notice of grant or denial of authorization.
0x001C Host FEEDBAG__BUDDY_ADDED
Host notice that another user has added current user to their Buddy List.
0x001D NCD FEEDBAG__REQUEST_AUTHORIZE_TO_BADOG
This is not currently documented.
0x001E NCD FEEDBAG__RESPOND_AUTHORIZE_TO_BADOG
This is not currently documented.
0x001F NCD FEEDBAG__BUDDY_ADDED_TO_BADOG
This is not currently documented.
0x0021 Any FEEDBAG__TEST_SNAC
This is not currently documented.
0x0022 NCD FEEDBAG__FORWARD_MSG
This is not currently documented.
0x0023 NCD FEEDBAG__IS_AUTH_REQUIRED_QUERY
This is not currently documented.
0x0024 NCD FEEDBAG__IS_AUTH_REQUIRED_REPLY
This is not currently documented.
0x0025 NCD FEEDBAG__RECENT_BUDDY_UPDATE
This is not currently documented.


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0015 ICQ BOS Active 1.2

SNACs for ICQ-specific features, primarily in legacy ICQ clients which use OSCAR.


Subgroup Origin Name
0x0001 Any ICQ__ERR
This is the error SNAC for the ICQ foodgroup.
0x0002 Client ICQ__DB_QUERY
Information request used by legacy ICQ clients.
0x0003 Host ICQ__DB_REPLY
Host information response to ICQ__DB_QUERY.

Common TLVs

From Aleksandr Shutko: SNAC(15,xx) - list of the TLVs SNAC(15,xx) TLV_LIST


There was some changes in ICQ service protocol in family 0x15 since ICQ2001 client. First came changes in search sequence - search became tlv-based. Then was changed info-update sequence in ICQLite. Here is the list of TLVs used in tlv-based requests:

  310     0x0136     uint32    User uin (search)
  320     0x0140     sstring    User firstname    
  330     0x014A     sstring    User lastname    
  340     0x0154     sstring    User nickname    
  350     0x015E     ecombo    User email    
  360     0x0168     acombo    Age range to search (search)
  370     0x0172     uint16    User age    
  380     0x017C     uint8    User gender    
  390     0x0186     uint16    User spoken language    
  400     0x0190     sstring    User home city name    
  410     0x019A     sstring    User home state abbr    
  420     0x01A4     uint16    User home country code    
  430     0x01AE     sstring    User work company name    
  440     0x01B8     sstring    User work department name    
  450     0x01C2     sstring    User work position (title)    
  460     0x01CC     uint16    User work ocupation code    
  470     0x01D6     icombo    User affilations node    
  490     0x01EA     icombo    User interests node    
  510     0x01FE     icombo    User past info node    
  530     0x0212     icombo    User homepage category/keywords    
  531     0x0213     hcombo    User homepage url    
  550     0x0226     sstring    Whitepages search keywords string (search)
  560     0x0230     uint8    Search only online users flag (search)
  570     0x023A     bcombo    User birthday info (year, month, day)    
  600     0x0258     sstring    User notes (about) text    
  610     0x0262     sstring    User home street address    
  620     0x026C     uint32    User home zip code    
  630     0x0276     sstring    User home phone number    
  640     0x0280     sstring    User home fax number    
  650     0x028A     sstring    User home cellular phone number    
  660     0x0294     sstring    User work street address    
  670     0x029E     sstring    User work city name    
  680     0x02A8     sstring    User work state name    
  690     0x02B2     uint16    User work country code    
  700     0x02BC     uint32    User work zip code    
  710     0x02C6     sstring    User work phone number    
  720     0x02D0     sstring    User work fax number    
  730     0x02DA     sstring    User work webpage url    
  760     0x02F8     uint8    User 'show web status' permissions    
  780     0x030C     uint8    User authorization permissions    
  790     0x0316     uint8    User GMT offset    
  800     0x0320     sstring    User originally from city    
  810     0x032A     sstring    User originally from state    
  820     0x0334     uint16    User originally from country (code)    



  sstring - uint16 value (length) and then asciiz string
  ecombo - sstring and uint8 value (email permission)
  acombo - two uint16 values (min age & max age)
  icombo - uint16 value (category) and then sstring (keywords)
  bcombo - uint16 value (year), uint16 - month, uint16 - day
  hcombo - uint16 value (category ?) and then sstring


ICQ Direct Connection

Types

 

Direct connection type

 
 

<a name="m0005"></a>     ICQ clients can send messages and files using peer-to-peer connection called "direct connection" (DC). Each ICQ client may have different internet connection: direct, proxy, firewall or other and to establish DC one client should know connection type of another client. This connection type also used by direct connections and called "DC type". Here is the list of values:

  0x0000   DC_DISABLED     Direct connection disabled / auth required
  0x0001   DC_HTTPS     Direct connection thru firewall or https proxy
  0x0002   DC_SOCKS     Direct connection thru socks4/5 proxy server
  0x0004   DC_NORMAL     Normal direct connection (without proxy/firewall)
  0x0006   DC_WEB     Web client - no direct connection



Versions

 

Direct connection protocol version

 
 

<a name="m0006"></a>     ICQ clients can send messages and files using peer-to-peer connection called "direct connection" (DC). Here is the list of direct connection protocol versions:

  0x0004   DCP_ICQ98     ICQ98
  0x0006   DCP_ICQ99     ICQ99
  0x0007   DCP_ICQ2000     ICQ2000
  0x0008   DCP_ICQ2001     ICQ2001
  0x0009   DCP_ICQLITE     ICQ Lite
  0x000A   DCP_ICQ2003B     ICQ2003B



ICQ Statuses

X

Marriage

 

<a name="marital"></a>Marital status code list

 
 

<a name="m0008"></a>     There was some new fields added to ICQ client data. One of them is marital status field. Here is the marital status code list:

  0x0000 (00)   MARITAL_NONE     Marital status not specified
  0x000A (10)   MARITAL_SINGLE     User is single
  0x000B (11)   MARITAL_LONGRS     User is in a long-term relationship
  0x000C (12)   MARITAL_ENGAGED     User is engaged
  0x0014 (20)   MARITAL_MARRIED     User is married
  0x001E (30)   MARITAL_DIVORCED     User is divorced
  0x001F (31)   MARITAL_SEPARATED     User is separated
  0x0028 (40)   MARITAL_WIDOWED     User is widowed



OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0016 AEG AEG Pending 1.0

SNACs for Enterprise Gateway-specific features.

Subgroup Origin Name
0x0001 Any AEG__ERR
This is the error SNAC for the AEG foodgroup.
0x0002 Template:Protocols/OSCAR/SNAC/AEG CONFIG QUERY/Origin AEG__CONFIG_QUERY
Template:Protocols/OSCAR/SNAC/AEG CONFIG QUERY/Description
0x0003 Template:Protocols/OSCAR/SNAC/AEG CONFIG REPLY/Origin AEG__CONFIG_REPLY
Template:Protocols/OSCAR/SNAC/AEG CONFIG REPLY/Description
0x0004 Template:Protocols/OSCAR/SNAC/AEG SET CHAT KEY INFO/Origin AEG__SET_CHAT_KEY_INFO
Template:Protocols/OSCAR/SNAC/AEG SET CHAT KEY INFO/Description
0x0005 Template:Protocols/OSCAR/SNAC/AEG SET CHAT KEY REPLY/Origin AEG__SET_CHAT_KEY_REPLY
Template:Protocols/OSCAR/SNAC/AEG SET CHAT KEY REPLY/Description
0x0006 Template:Protocols/OSCAR/SNAC/AEG CLIENT CONTROL/Origin AEG__CLIENT_CONTROL
Template:Protocols/OSCAR/SNAC/AEG CLIENT CONTROL/Description


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0017 BUCP BUCP Active 1.15

One of the authentication methods for clients, which also provides registration for ICQ clients.

SNACs

Subgroup Origin Name
0x0001 Any BUCP__ERR
This is the error SNAC for the BUCP foodgroup.
0x0002 Client BUCP__LOGIN_REQUEST
Client login request.
0x0003 Host BUCP__LOGIN_RESPONSE
Host login response, will contain reconnect information with login cookie or an error code and/or URL.
0x0004 Client BUCP__REGISTER_REQUEST
Client registration for legacy ICQ clients.
0x0005 Host BUCP__REGISTER_RESPONSE
Host response to BUCP__REGISTER_REQUEST. May contain confirmation of registration or an error code and/or URL.
0x0006 Client BUCP__CHALLENGE_REQUEST
Request challenge for login request.
0x0007 Host BUCP__CHALLENGE_RESPONSE
Response to BUCP__CHALLENGE_REQUEST with challenge.
0x0008 Client BUCP__ASASN_REQUEST
AOL Suggest A Screenname Request, suggests screennames based on other parameters.
0x0009 Host BUCP__ASASN_RESPONSE
Response to BUCP__ASASN_REQUEST with a list of suggestions
0x000A Host BUCP__SECURID_REQUEST
Host SecurID request for client to continue logging in.
0x000B Client BUCP__SECURID_RESPONSE
Client response to BUCP__SECURID_RESPONSE with SecurID code.
0x000C Client BUCP__REGISTRATION_IMAGE_REQUEST
Request registration image, or CAPTCHA
0x000D Host BUCP__REGISTRATION_IMAGE_REPLY
Response to BUCP__REGISTRATION_IMAGE_REQUEST containing image information


OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Name Service Status Version
0x0018 ALERT BOS, ALERT Active 1.139

Notes (TLVs from another): Server alerts from subscribed services.

Subgroup Origin Name
0x0001 Any ALERT__ERR
This is the error SNAC for the ALERT foodgroup.
0x0002 NCD ALERT__SET_ALERT_REQUEST
This is not currently documented.
0x0003 NCD ALERT__SET_ALERT_REPLY
This is not currently documented.
0x0004 NCD ALERT__GET_SUBS_REQUEST
This is not currently documented.
0x0005 NCD ALERT__GET_SUBS_RESPONSE
This is not currently documented.
0x0006 Client ALERT__NOTIFY_CAPABILITIES
This is not currently documented.
0x0007 Host ALERT__NOTIFY
This is not currently documented.
0x0008 NCD ALERT__GET_RULE_REQUEST
This is not currently documented.
0x0009 NCD ALERT__GET_RULE_REPLY
This is not currently documented.
0x000A NCD ALERT__GET_FEED_REQUEST
This is not currently documented.
0x000B NCD ALERT__GET_FEED_REPLY
This is not currently documented.
0x000D NCD ALERT__REFRESH_FEED
This is not currently documented.
0x000E NCD ALERT__EVENT
This is not currently documented.
0x000F NCD ALERT__QOG_SNAC
This is not currently documented.
0x0010 NCD ALERT__REFRESH_FEED_STOCK
This is not currently documented.
0x0011 NCD ALERT__NOTIFY_TRANSPORT
This is not currently documented.
0x0012 NCD ALERT__SET_ALERT_REQUEST_V2
This is not currently documented.
0x0013 NCD ALERT__SET_ALERT_REPLY_V2
This is not currently documented.
0x0014 NCD ALERT__TRANSIT_REPLY
This is not currently documented.
0x0015 NCD ALERT__NOTIFY_ACK
This is not currently documented.
0x0016 Client ALERT__NOTIFY_DISPLAY_CAPABILITIES
This is not currently documented.
0x0017 NCD ALERT__USER_ONLINE
This is not currently documented.