Protocols/OSCAR: Difference between revisions

From NINA Wiki
Jump to navigation Jump to search
No edit summary
m (Fixed email addresses)
 
(14 intermediate revisions by the same user not shown)
Line 2: Line 2:
OSCAR stands for "Open System for Communication in Realtime", and while originally and ironically was not open, today it is. At one time used by AOL's AIM and ICQ products, and later discontinued, it now has had a rebirth of sorts here. We not only will fully document the protocol, but will maintain and update it.
OSCAR stands for "Open System for Communication in Realtime", and while originally and ironically was not open, today it is. At one time used by AOL's AIM and ICQ products, and later discontinued, it now has had a rebirth of sorts here. We not only will fully document the protocol, but will maintain and update it.


== OSCAR Protocol Documentation ==
If you want to contribute, you can request an account by sending an email to [mailto:accounts@wiki.nina.chat accounts@wiki.nina.chat] with desired username and also a few words on what you have to contribute (for spam control). You should also check the [[Needed]], which is a list of things we are looking for.
 
If you want to contribute something anonymously or without registering, send it to [mailto:contribute@wiki.nina.chat contribute@wiki.nina.chat]. If anonymity is desired, state so, and your name/email will not be mentioned.
 
You can also [[Donate|donate]] to help with this AIM/AOL revival, because it is a full time job at this point.
 
== Introduction ==


The OSCAR protocol is a binary protocol and is transmitted in network byte order unless otherwise noted. The application protocol stack consists of TCP for networking, a [[Protocols/OSCAR/FLAP|FLAP]] layer providing framing, and [[Protocols/OSCAR/SNAC|SNACs]] representing the OSCAR protocol messages. SNACs are broken into [[Protocols/OSCAR#Foodgroups|foodgroups]] (get it?) and subgroups which represent commands and services.
The OSCAR protocol is a binary protocol and is transmitted in network byte order unless otherwise noted. The application protocol stack consists of TCP for networking, a [[Protocols/OSCAR/FLAP|FLAP]] layer providing framing, and [[Protocols/OSCAR/SNAC|SNACs]] representing the OSCAR protocol messages. SNACs are broken into [[Protocols/OSCAR#Foodgroups|foodgroups]] (get it?) and subgroups which represent commands and services.
Line 9: Line 15:


Sometimes within the ICQ community it's called "protocol v7/8/9" but this is inaccurate. Additionally the newer [[Protocols/WIM|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.
Sometimes within the ICQ community it's called "protocol v7/8/9" but this is inaccurate. Additionally the newer [[Protocols/WIM|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.
=== Connecting ===
Depending on whether or not SSL/TLS is being used, and version of the protocol, different authentication servers may be used. The authentication server also acts as a load balancer and will return a [[Protocols/OSCAR/Services/BOS|BOSS]] server to connect to when authentication is successful.
{| class="wikitable"
! Hostname
! Port
! Protocol
! Note
|-
| login.oscar.nina.bz
| 5190
| OSCAR
| OSCAR over FLAP
|-
| kdc.uas.nina.bz
| 443
| OSCAR
| OSCAR over TLS
|-
| api.screenname.nina.bz
| 443
| OSCAR or WIM
| HTTP-based clientLogin
|}
<pre>
There are several servers that make up the AIM backend complex.
api.screenname.aol.com
-- The api.screenname servers provide all the authentication web services, also knows as AOL Open Auth. The first step to an AIM session is using clientLogin to authenticate the user.
api.oscar.aol.com
-- The api.oscar servers provide access to all the AIM web services. For OpenAIM it provides a service discovery mechanism for a client to find the correct BOSS server to which it should connect. It also provides a redirect service for the start page and expressions page.
</pre>
A single user can use multiple clients at the same time on the same or different devices. When building a client, or library, care should be taken to deal with a single user being online multiple times. In general, all IMs and Buddy notifications will be sent to all instances, although there are some IM routing rules that come into effect when users are away or idle.
==== Clients ====
You can find a full list of available OSCAR clients [[Protocols/OSCAR/Clients|here]].


== Foodgroups ==
== Foodgroups ==
Line 92: Line 141:
{{Protocols/OSCAR/Foodgroups/BART/SNACs}}
{{Protocols/OSCAR/Foodgroups/BART/SNACs}}


<!-- Hidden until we can be sure this is worth implementing
=== ICQCHAT_NAV (0x0011) ===
=== ICQCHAT_NAV (0x0011) ===
{{Protocols/OSCAR/Foodgroups/ICQCHAT_NAV/Description}}
{{Protocols/OSCAR/Foodgroups/ICQCHAT_NAV/Description}}
<br>[[Protocols/OSCAR/SNAC_11|Read More]]
<br>[[Protocols/OSCAR/SNAC_11|Read More]]
{{Protocols/OSCAR/Foodgroups/ICQCHAT_NAV/SNACs}}
{{Protocols/OSCAR/Foodgroups/ICQCHAT_NAV/SNACs}}
 
-->
<!-- Hidden until we can be sure this is worth implementing
=== ICQCHAT (0x0012) ===
=== ICQCHAT (0x0012) ===
{{Protocols/OSCAR/Foodgroups/ICQCHAT/Description}}
{{Protocols/OSCAR/Foodgroups/ICQCHAT/Description}}
<br>[[Protocols/OSCAR/SNAC_12|Read More]]
<br>[[Protocols/OSCAR/SNAC_12|Read More]]
{{Protocols/OSCAR/Foodgroups/ICQCHAT/SNACs}}
{{Protocols/OSCAR/Foodgroups/ICQCHAT/SNACs}}
-->


=== FEEDBAG (0x0013) ===
=== FEEDBAG (0x0013) ===
Line 112: Line 164:
{{Protocols/OSCAR/Foodgroups/ICQ/SNACs}}
{{Protocols/OSCAR/Foodgroups/ICQ/SNACs}}


<!-- Hidden until we can be sure this is worth implementing
=== AEG (0x0016) ===
=== AEG (0x0016) ===
{{Protocols/OSCAR/Foodgroups/AEG/Description}}
{{Protocols/OSCAR/Foodgroups/AEG/Description}}
<br>[[Protocols/OSCAR/SNAC_16|Read More]]
<br>[[Protocols/OSCAR/SNAC_16|Read More]]
{{Protocols/OSCAR/Foodgroups/AEG/SNACs}}
{{Protocols/OSCAR/Foodgroups/AEG/SNACs}}
-->


=== BUCP (0x0017) ===
=== BUCP (0x0017) ===
Line 127: Line 181:
{{Protocols/OSCAR/Foodgroups/ALERT/SNACs}}
{{Protocols/OSCAR/Foodgroups/ALERT/SNACs}}


=== UNNAMED_FG_22 (0x0022) ===
=== PLUGIN (0x0022) ===
{{Protocols/OSCAR/Foodgroups/UNNAMED_FG_22/Description}}
{{Protocols/OSCAR/Foodgroups/PLUGIN/Description}}
<br>[[Protocols/OSCAR/SNAC_22|Read More]]
<br>[[Protocols/OSCAR/SNAC_22|Read More]]
{{Protocols/OSCAR/Foodgroups/UNNAMED_FG_22/SNACs}}
{{Protocols/OSCAR/Foodgroups/PLUGIN/SNACs}}


=== UNNAMED_FG_24 (0x0024) ===
=== UNNAMED_FG_24 (0x0024) ===
Line 137: Line 191:
{{Protocols/OSCAR/Foodgroups/UNNAMED_FG_24/SNACs}}
{{Protocols/OSCAR/Foodgroups/UNNAMED_FG_24/SNACs}}


=== UNNAMED_FG_25 (0x0025) ===
=== MDIR (0x0025) ===
{{Protocols/OSCAR/Foodgroups/UNNAMED_FG_25/Description}}
{{Protocols/OSCAR/Foodgroups/MDIR/Description}}
<br>[[Protocols/OSCAR/SNAC_25|Read More]]
<br>[[Protocols/OSCAR/SNAC_25|Read More]]
{{Protocols/OSCAR/Foodgroups/UNNAMED_FG_25/SNACs}}
{{Protocols/OSCAR/Foodgroups/MDIR/SNACs}}


<!-- Hidden until we can be sure this is worth implementing
=== AOL (0x0040) ===
=== AOL (0x0040) ===
{{Protocols/OSCAR/Foodgroups/AOL/Description}}
{{Protocols/OSCAR/Foodgroups/AOL/Description}}
<br>[[Protocols/OSCAR/SNAC_40|Read More]]
<br>[[Protocols/OSCAR/SNAC_40|Read More]]
{{Protocols/OSCAR/Foodgroups/AOL/SNACs}}
{{Protocols/OSCAR/Foodgroups/AOL/SNACs}}
-->


=== ARS (0x044A) ===
=== ARS (0x044A) ===
Line 151: Line 207:
<br>[[Protocols/OSCAR/SNAC_44A|Read More]]
<br>[[Protocols/OSCAR/SNAC_44A|Read More]]
{{Protocols/OSCAR/Foodgroups/ARS/SNACs}}
{{Protocols/OSCAR/Foodgroups/ARS/SNACs}}
[[Category:Not_Currently_Documented]]

Latest revision as of 11:02, 18 March 2022

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. At one time used by AOL's AIM and ICQ products, and later discontinued, it now has had a rebirth of sorts here. We not only will fully document the protocol, but will maintain and update it.

If you want to contribute, you can request an account by sending an email to accounts@wiki.nina.chat with desired username and also a few words on what you have to contribute (for spam control). You should also check the Needed, which is a list of things we are looking for.

If you want to contribute something anonymously or without registering, send it to contribute@wiki.nina.chat. If anonymity is desired, state so, and your name/email will not be mentioned.

You can also donate to help with this AIM/AOL revival, because it is a full time job at this point.

Introduction

The OSCAR protocol is a binary protocol and is transmitted in network byte order unless otherwise noted. The application protocol stack consists of TCP for networking, a FLAP layer providing framing, and SNACs representing the OSCAR protocol messages. SNACs are broken into foodgroups (get it?) and subgroups which represent commands and services.

Many of the server connections support TLS between the FLAP and TCP layer if single hop encryption is desired. In most cases, the binary data stream is formed by appending the elements in order with no extra padding.

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

Connecting

Depending on whether or not SSL/TLS is being used, and version of the protocol, different authentication servers may be used. The authentication server also acts as a load balancer and will return a BOSS server to connect to when authentication is successful.

Hostname Port Protocol Note
login.oscar.nina.bz 5190 OSCAR OSCAR over FLAP
kdc.uas.nina.bz 443 OSCAR OSCAR over TLS
api.screenname.nina.bz 443 OSCAR or WIM HTTP-based clientLogin


There are several servers that make up the AIM backend complex. 

api.screenname.aol.com
-- The api.screenname servers provide all the authentication web services, also knows as AOL Open Auth. The first step to an AIM session is using clientLogin to authenticate the user. 

api.oscar.aol.com
-- The api.oscar servers provide access to all the AIM web services. For OpenAIM it provides a service discovery mechanism for a client to find the correct BOSS server to which it should connect. It also provides a redirect service for the start page and expressions page. 

A single user can use multiple clients at the same time on the same or different devices. When building a client, or library, care should be taken to deal with a single user being online multiple times. In general, all IMs and Buddy notifications will be sent to all instances, although there are some IM routing rules that come into effect when users are away or idle.

Clients

You can find a full list of available OSCAR clients here.

Foodgroups

OSERVICE (0x0001)

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.
Read More

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.

LOCATE (0x0002)

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.
Read More

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.

BUDDY (0x0003)

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.
Read More

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.

ICBM (0x0004)

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

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.

Legacy ad service used for requesting ads for display.
Read More

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.

INVITE (0x0006)

This is the foodgroup for inviting users to join NINA.
Read More

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.

ADMIN (0x0007)

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

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.

POPUP (0x0008)

Displays popup notifications from service.
Read More

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.

PD (0x0009)

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

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.

USER_LOOKUP (0x000A)

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

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.

STATS (0x000B)

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

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.

TRANSLATE (0x000C)

Legacy translation service for older AIM clients.
Read More

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.

CHAT_NAV (0x000D)

Chat navigation and invitation service.
Read More

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.

CHAT (0x000E)

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

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.

ODIR (0x000F)

User directory search, related to the USER_LOOKUP service, but allowing users to provide greater profile detail.
Read More

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.

BART (0x0010)

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.
Read More

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.


FEEDBAG (0x0013)

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.
Read More

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.

ICQ (0x0015)

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

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.


BUCP (0x0017)

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

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

ALERT (0x0018)

Server alerts from subscribed services.
Read More

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.

PLUGIN (0x0022)

This foodgroup provides update and release information for client plugins, provided the client is officially supported.
Read More

Subgroup Origin Name
0x0001 Any PLUGIN__ERR
This is the error SNAC for the PLUGIN foodgroup.
0x0002 Client PLUGIN__UPDATE_QUERY
Ask host if provided plugins have available updates.
0x0003 Host PLUGIN__UPDATE_REPLY
Host response to PLUGIN__UPDATE_QUERY listing updates, if any, that are available.

UNNAMED_FG_24 (0x0024)

This service is yet to be fully documented.
Read More No SNACs yet documented.

MDIR (0x0025)

This service is yet to be fully documented.
Read More No SNACs yet documented.


ARS (0x044A)

NINA-provided third-party connection for rendezvous/direct connections between clients behind firewalls.
Read More

Subgroup Origin Name
0x0001 Any ARS__ERR
This is the error SNAC for the ARS foodgroup.
0x0002 Client ARS__LISTEN_QUERY
First SNAC sent to host from client when creating an ARS connection.
0x0003 Host ARS__LISTEN_REPLY
Listen acknowledgement.
0x0004 Client ARS__CONNECT_REQ
First SNAC sent to the host when "receiving" a connection over an ARS server.
0x0005 Host ARS__CONNECT_ACK
Indication from host that the ARS initialization process has finished.