Table of contents:

Introduction

The Messenger Config service (MsgrConfig) is a SOAP (XML) and HTTP Web Service. Introduced with MSNP9.

Defines various configuration options for the Official Client. Replaces svcs.microsoft.com.

It's default URL is http://config.messenger.msn.com/Config/MsgrConfig.asmx.

This service does not require Passport authentication.

NOTE: Not all configuration options apply to all Client Versions, even those that seem like they would!

Actions

GetClientConfig

Client/Request

There are two ways of requesting the GetClientConfig action.

One is by using a SOAP (XML) request, and the other is by URL parameters.

As a SOAP Action / POST request

POST /Config/MsgrConfig.asmx HTTP/1.1
SOAPAction: "http://www.msn.com/webservices/Messenger/Client/GetClientConfig"
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 489

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
>
	<soap:Body>
		<GetClientConfig
			xmlns='http://www.msn.com/webservices/Messenger/Client'
		>
			<clientinfo>
				<Country>US</Country>
				<CLCID>0809</CLCID>
				<PLCID>0409</PLCID>
				<GeoID>242</GeoID>
			</clientinfo>
		</GetClientConfig>
	</soap:Body>
</soap:Envelope>

Where <Country> is the ISO 3166-1 alpha-2 of the binary you are using.
Where <CLCID> is the system's language code in hexadecimal nybbles.
Where <PLCID> is the client binary's language code in hexadecimal nybbles.
Where <GeoID> is the system's geographic location in decimal.

As query parameters

NOTE: This request is exploded for visibility and formatting reasons. Newlines aren't permitted in the HTTP request line.

GET /Config/MsgrConfig.asmx
	?op=GetClientConfig
	&Country=US
	&CLCID=0809
	&PLCID=0409
	&GeoID=242
	&ver=8.5.1302
HTTP/1.1

Where op is always GetClientConfig.
Where Country is the ISO 3166-1 alpha-2 of the binary you are using.
Where CLCID is the system's language code in hexadecimal nybbles.
Where PLCID is the client binary's language code in hexadecimal nybbles.
Where GeoID is the system's geographic location in decimal.
Where ver is the version of the client as a triplet.

Server/Response

As a SOAP envelope

This only applies if you use a SOAP request.

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 467

<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
	<soap:Body>
		<GetClientConfigResponse
			xmlns="http://www.msn.com/webservices/Messenger/Client"
		>
			<GetClientConfigResult><![CDATA[<MsgrConfig>...</MsgrConfig>]]></GetClientConfigResult>
		</GetClientConfigResponse>
	</soap:Body>
</soap:Envelope>

Where <GetClientConfigResponse> contains a <GetClientConfigResult>.
Where GetClientConfigResult always contains a Character Data block containing a <MsgrConfig> element.
Where <MsgrConfig> (inside the CDATA) is the Configuration Document.

As a XML document

This only applies if you use query parameters.

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 70

<?xml version="1.0" encoding="utf-8" ?>
<MsgrConfig>
...
</MsgrConfig>

Where <MsgrConfig> (everything but the declaration) is the Configuration Document.

The Configuration Document

<MsgrConfig>, the main element, contains six children:

Simple

This element contains multiple children.

Contains various generic configuration options.

Beta

This element only contains the <Invite> element.

Invite

This element has two children:

Config

This element only has one child:

P2PConfig

This element has nine children:

ObjectStore

This element has three children:

DirectConnect

This element has only one attribute:

TCPBridge

This element has only one child:

UDPBridge

This element has six children:

ReceiveBlobTimeout

This element is the numerical value of milliseconds (or seconds?) before timing out a P2P transaction.

SBBridge

This element has three children:

NATTraversal

This element has two children:

DirectBridge

This element only has one child:

TURNBridge

This element has three children:

DisablePhoneDialer

This element, if set to 1, disables the Phone Dialer feature.

GetItemVersionForUnknown

This element if set to true, allows GetItemVersion to be called on unknown users.

Logitech

This element has three children:

MinFlashPlayer

This element has three attributes:

RadUrl

This element is a URL to the advertisement service.

This element supports only one attribute:

ComScoreUrlFormat

This element is a URL to a tracking service.

This element supports a formatting string using the FormatMessage syntax as %1.

Relay

This element has five children:

Contacts

This element has two children:

Client

This element has six attributes:

Server

This element has eight attributes:

TrustedDomains

This element contains any amount of <domain> elements.

domain

This element only supports one attribute:

ErrorResponseTable

This element contains any amount of <Feature> elements.

Feature

This element has two attributes:

This element contains any amount of <Entry> elements.

Entry

This element has two attributes:

USBDevices

This element contains one or more <Device> elements.

Device

This element has two attributes:

VoiceVideo

This element has two children:

Auth

This element has six children:

Log

This element only has one attribute:

CirclesWeb

This element has fourteen attributes:

All children that do not end with -SiteId support a formatting string of $CIRCLECID$, which is replaced with the circle's Common ID.

AnonymousIMSettings

This element only has one child:

SettingsPage

This element has two attributes:

ServerRates

This element has five children:

NSPoll

This element has two attributes:

SBPoll

This element has two attributes:

DisableWinsock10053Error

This element, if set to true, disables the 10053 error handler.

TabConfig

This element contains two children:

Replaces the tabs.asp service on svcs.microsoft.com.

msntabsettings

This element contains two children:

This element may be unused, considering Client Version 6.0 does not download OEM tabs, however there exists TestTabServer in the registry which seems to set the same flag the OEM tab downloader does. (TODO: Do these values still apply if TestTabServer is set to anything?)

msntabdata

This element contains any amount of <tab> elements.

tab

This element has eleven children:

AbchCfg

This element contains only one child:

Replaces the abch_config.asp service on svcs.microsoft.com.

abchconfig

This element contains three children:

AdMainConfig

This element contains two children:

Replaces the ads.asp and adxml_main.asp service on svcs.microsoft.com.

AdPhoneConfig

This element is the URL to the advertisement service. Loaded as a Advertisement Response document.
Used for the phone dialer. If $PUID$ is included in the URL, it is replaced with the user's Passport Unique ID formatted as 16 hexadecimal nybbles.

Replaces the adxml_phone.asp service on svcs.microsoft.com.

LocalizedConfig

This element contains multiple elements.

This element has two attributes:

Contains a large chunk of options that may vary wildly between locales.

AdMainConfig

This element has six children:

AdBanner20URL

This element is the URL to the advertisement service that handles banner advertisements.
If $PUID$ is included in the URL, it is replaced with the user's Passport Unique ID formatted as 16 hexadecimal nybbles.

This element has only one attribute:

StdAd

This element has only one child:

This element has x attributes:

VideoFeeds

This element supports two attributes:

rss (Feed List)

This root element only has one child:

channel

This element has only one child:

This element also contains one or more <item> elements.

item

This element has only one child:

rss (Video Feed)

This root element only has one child:

channel

This element has three children:

This element also contains one or more <item> elements.

item

This element has five children:

enclosure

This element only has one attribute:

AppDirConfig

This element has five children:

wave4

This element contains the URL to the Games Browser page, and has only one attribute:

AVPrerollAd

This element has four attributes:

AVPrerollAd2

This element has four attributes:

Beta

This element only contains the <Invite> element.

BuyWebcamLink

This element has only one attribute:

Invite

This element has two children:

Contacts

This element has eight children:

ABPendingRequests

This element has six children:

EditMyLiveContactProfile

This element has two children:

EditMyProfile

This element has two children:

BuddysSocialNetwork

This element has four children:

Marketplace

This element has two children:

MessengerInvite

This element has three children:

Profile

This element has four children:

PeopleSearch

This element has two children:

Import

This element has two children:

Export

This element has two children:

SocialNetwork

This element has four children:

SNInvites

This element has three children:

ViewPhotosWLPersonURL

This element has two children:

ContactCard

This element has x children:

DynamicContent

This element contains three children:

NOTE: Not all categories apply to all Client Versions and/or vendor types.

(All DynamicContent children)

These elements contains many optional children:

All elements are described below..

NOTE: The visibleto attribute isn't used. It usually contains the string 7.0.729 and greater.

(All DynamicContent category elements)

These elements contain three children:

slots

This element contains up to eight <URL> elements.

URL

This element has one attribute:

This element contains a URL to a <msnmenuitem> document.

msnmenuitem document

This root element contains five children:

This root element supports only one attribute:

NOTE: Mostly with <merchant>, MessengerContentInstaller.InstallIndirectContent is used instead for the handler for <clickurl>.
In this case, a Messenger Content Package Document with the contentlocationurl attribute set to a Messenger Content Cabinet's URL must be used like such:

<?xml version="1.0" encoding="utf-8" ?><package contentlocationurl="http://example.com/content1.mct" />
EditorialConfig

This element is the URL to the editorial document.
Used in place of the advertisement during a cycle (can be forced via right click) before Client Version 7.0.

msn-data (Editorial document)

This root element has two children:

This root element also contains one or more <article-group> elements.

article-group

This element contains one or more <article> elements.

article

This element has two active children depending on the type:

This element has only one attribute:

FederatedMobileMessaging

This element has two attributes:

FlashUpgradeURL

This element contains a URL to a web page that tells you how to update Macromedia/Adobe Flash Player.

This element supports a formatting string of $VERSION$, which is replaced with the current version of the plugin.

FSS

This element has two children:

GLinkMarket

This element only has one attribute:

Highlight

This element has four children:

FirstRunURLSet

This element contains one or more <FirstRunURL> elements.

FirstRunURL

This element has two children:

This element has only one attribute:

RecurringHighlightURL

This element only has one child:

IntroConfig

This element has two attributes:

LiveFolders

This element has only one attribute:

Marketplace

This element has two children:

General

This element has only one attribute:

Webcam

This element has only one attribute:

MessengerBlogURL

This element contains a URL to a blog related to the Official Client's development team.

MobileMessaging

This element has seven attributes:

MSNSearch

This element has ten children:

All children support two formatting strings:

The <SharedSearchURL> and <SharedSearchURL2> children support an extra formatting string:

MsnTodayConfig

This element has four children:

MusicIntegration

This empty element has two attributes:

OneCare

This empty element has only one attribute:

PE

This empty element only has one attribute:

PremiumAV

This empty element has three attributes:

PSTNOut

This empty element has only one attribute:

PublicFederated

This element only contains the <YahooNetwork> element.

YahooNetwork

This empty element has three attributes:

ReportAbuse

This element has two children:

RL

This element has two children:

ViewProfileURL

This element is the URL to the profile service.

This element has only one optional attribute:

This element supports six formatting strings using the FormatMessage syntax:

SDrive

This empty element has two attributes:

SocialToast

This element only contains the [<SuppressedEmailDomain>] element.

SuppressedEmailDomain

This element contains the fully qualified domain name to ignore when receiving a social alert.

SQMNoOpt

This element has only one child (? might be an attribute):

TabConfig

This element has two children:

slots

This element contains one or more <URL> elements.

URL

This element contains the URL to a tab advertisng document, it has three attributes:

TODO: write document schema out, and do they support more than one (assuming no?, need OC14)

TermsOfUse

This element has two children:

ThreeDegrees

This element has two children:

UPUX

This element contains one or more <Product> elements.

Product

This element has six attributes:

This element has four children:

All children have these three attributes:

VoiceClip

This element has only one attribute:

VoiceVideo

This element has five children:

VR

This element has three children:

WebWatchConfig

This element has four children:

AvatarData

This element contains any amount of <avatar> elements.

avatar

This element has two children:

Circles

This element has two children:

CPPMarket

Unused.

DynamicDisplayPics

This element has three attributes:

Products

TODO: Early version of <UPUX> used before Client Version 7.0.0777.

Examples

POST request

Client/Request

POST /Config/MsgrConfig.asmx HTTP/1.1
SOAPAction: "http://www.msn.com/webservices/Messenger/Client/GetClientConfig"
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 489

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
>
	<soap:Body>
		<GetClientConfig
			xmlns='http://www.msn.com/webservices/Messenger/Client'
		>
			<clientinfo>
				<Country>US</Country>
				<CLCID>0809</CLCID>
				<PLCID>0409</PLCID>
				<GeoID>242</GeoID>
			</clientinfo>
		</GetClientConfig>
	</soap:Body>
</soap:Envelope>

Server/Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 2588

<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
	<soap:Body>
		<GetClientConfigResponse
			xmlns="http://www.msn.com/webservices/Messenger/Client"
		>
			<GetClientConfigResult><![CDATA[<MsgrConfig>
				<Simple>
					<Config>
						<ExpiresInDays>2</ExpiresInDays>
					</Config>
				</Simple>
				<TabConfig>
					<msntabsettings>
						<oemtotallimit>1</oemtotallimit>
						<oemdisplaylimit>1</oemdisplaylimit>
					</msntabsettings>
					<msntabdata>
						<tab>
							<image>res:bell</image>
							<name>MSN Alerts</name>
							<type>Alerts</type>
							<tooltip>The Alerts tab lists all of the alerts you have received in the last 24 hours from MSN Alerts</tooltip>
							<contenturl>http://alerts.msn.com/alerts/alerttab.asp?Country=HT&CLCID=0409&PLCID=0409</contenturl>
							<hiturl>http://c.msn.com/c.gif?di=2308&tp=http://messengertabs.msn.com/us/alerts</hiturl>
							<siteid>31560</siteid>
							<notificationid>111200100</notificationid>
							<hidden>false</hidden>
						</tab>
					</msntabdata>
				</TabConfig>
				<AbchCfg>
					<abchconfig>
					<url>http://contacts.msn.com/abservice/abservice.asmx</url>
					</abchconfig>
				</AbchCfg>
				<AdMainConfig>
					<AdDownloadTimeInMinutes>120</AdDownloadTimeInMinutes>
					<AdMainCfg>http://rad.msn.com/ADSAdClient31.dll?GetAd?PG=IMSCB1?SC=HF?PUID=$PUID$</AdMainCfg>
				</AdMainConfig>
				<AdPhoneConfig>http://rad.msn.com/ADSAdClient31.dll?GetAd?PG=IMSHB1?SC=HF?PUID=$PUID$</AdPhoneConfig>
				<LocalizedConfig Market="en-US">
					<EditorialConfig>http://www.msn.com/infopane/messenger.armx</EditorialConfig>
					<MsnTodayConfig>
						<MsnTodayURL>http://t.msn.com/en-us/default.aspx</MsnTodayURL>
						<MsnTodaySiteID>6528</MsnTodaySiteID>
					</MsnTodayConfig>
					<AppDirConfig>
						<AppDirPageURL>http://appdirectory.messenger.msn.com/AppDirectory/Directory.aspx?L=en-US</AppDirPageURL>
						<AppDirSeviceURL>http://appdirectory.messenger.msn.com/AppDirectory/AppDirectory.asmx</AppDirSeviceURL>
						<AppDirVersionURL>http://appdirectory.messenger.msn.com/AppDirectory/GetAppdirVersion.aspx</AppDirVersionURL>
					</AppDirConfig>
					<TermsOfUse>
						<TermsOfUseSID>956</TermsOfUseSID>
						<TermsOfUseURL>http://messenger.msn.com/Help/Terms.aspx?mkt=en-us</TermsOfUseURL>
					</TermsOfUse>
				</LocalizedConfig>
			</MsgrConfig>]]></GetClientConfigResult>
		</GetClientConfigResponse>
	</soap:Body>
</soap:Envelope>

GET request

Client/Request

GET /Config/MsgrConfig.asmx?op=GetClientConfig&Country=US&CLCID=0809&PLCID=0409&GeoID=242&ver=8.5.1302 HTTP/1.1

Server/Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 2036

<?xml version="1.0" encoding="utf-8" ?>
<MsgrConfig>
	<Simple>
		<Config>
			<ExpiresInDays>2</ExpiresInDays>
		</Config>
	</Simple>
	<TabConfig>
		<msntabsettings>
			<oemtotallimit>1</oemtotallimit>
			<oemdisplaylimit>1</oemdisplaylimit>
		</msntabsettings>
		<msntabdata>
			<tab>
				<image>res:bell</image>
				<name>MSN Alerts</name>
				<type>Alerts</type>
				<tooltip>The Alerts tab lists all of the alerts you have received in the last 24 hours from MSN Alerts</tooltip>
				<contenturl>http://alerts.msn.com/alerts/alerttab.asp?Country=HT&CLCID=0409&PLCID=0409</contenturl>
				<hiturl>http://c.msn.com/c.gif?di=2308&tp=http://messengertabs.msn.com/us/alerts</hiturl>
				<siteid>31560</siteid>
				<notificationid>111200100</notificationid>
				<hidden>false</hidden>
			</tab>
		</msntabdata>
	</TabConfig>
	<AbchCfg>
		<abchconfig>
		<url>http://contacts.msn.com/abservice/abservice.asmx</url>
		</abchconfig>
	</AbchCfg>
	<AdMainConfig>
		<AdDownloadTimeInMinutes>120</AdDownloadTimeInMinutes>
		<AdMainCfg>http://rad.msn.com/ADSAdClient31.dll?GetAd?PG=IMSCB1?SC=HF?PUID=$PUID$</AdMainCfg>
	</AdMainConfig>
	<AdPhoneConfig>http://rad.msn.com/ADSAdClient31.dll?GetAd?PG=IMSHB1?SC=HF?PUID=$PUID$</AdPhoneConfig>
	<LocalizedConfig Market="en-US">
		<EditorialConfig>http://www.msn.com/infopane/messenger.armx</EditorialConfig>
		<MsnTodayConfig>
			<MsnTodayURL>http://t.msn.com/en-us/default.aspx</MsnTodayURL>
			<MsnTodaySiteID>6528</MsnTodaySiteID>
		</MsnTodayConfig>
		<AppDirConfig>
			<AppDirPageURL>http://appdirectory.messenger.msn.com/AppDirectory/Directory.aspx?L=en-US</AppDirPageURL>
			<AppDirSeviceURL>http://appdirectory.messenger.msn.com/AppDirectory/AppDirectory.asmx</AppDirSeviceURL>
			<AppDirVersionURL>http://appdirectory.messenger.msn.com/AppDirectory/GetAppdirVersion.aspx</AppDirVersionURL>
		</AppDirConfig>
		<TermsOfUse>
			<TermsOfUseSID>956</TermsOfUseSID>
			<TermsOfUseURL>http://messenger.msn.com/Help/Terms.aspx?mkt=en-us</TermsOfUseURL>
		</TermsOfUse>
	</LocalizedConfig>
</MsgrConfig>