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
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
ID
|
Name
|
Service
|
Status
|
Version
|
0x000E
|
CHAT
|
CHAT
|
Active
|
1.10
|
Chat service for all messages, joins, departures, room information, etc.
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.
|
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
|
ID
|
Name
|
Service
|
Status
|
Version
|
0x0011
|
ICQCHAT_NAV
|
CHAT
|
Active
|
1.1
|
ICQ front end to the CHAT_NAV service.
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.
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.
|
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
|
|
|
<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 |
|
|
|
|
|
|
|
ID
|
Name
|
Service
|
Status
|
Version
|
0x0016
|
AEG
|
AEG
|
Pending
|
1.0
|
SNACs for Enterprise Gateway-specific features.
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
|
ID
|
Name
|
Service
|
Status
|
Version
|
0x0018
|
ALERT
|
BOS, ALERT
|
Active
|
1.139
|
Notes (TLVs from another):
Server alerts from subscribed services.