# Table of contents:
# Introduction
This page goes on about various (usually client-related) things that don't really have a home as their own page (yet?).
# Object Reference
Otherwise known as an "MSNObject" or msnobj, an Object Reference is a reference to an object stored in the Object Store.
Introduced in Client Version 6.0 with MSNP9.
# msnobjThis element has six attributes:
Creator: The user handle that created the object. Usually the current user.Size: The file size of the object.Type: The category number of the object:1: ?2: A custom emoticon.3: A (static) display picture.4: ?5: A (static) background6: ?7: A Dynamic Display Picture.8: A Wink.9: ?10: A Dynamic Background.11: A voice clip.12: ?13: ?14: Location XML OR Signature Sounds15: ?16: ?17: ?
Location: A filename to give this object. Only used in version 1 Object Stores.Friendly: The friendly (display) name of the object.SHA1D: The SHA1 hash of the object's data. Converted to base64. Used as the base filename in version 2 Object Stores.
This element has seven optional attributes
SHA1C: A SHA1 hash of all fields and data combined in order BEFORE this attribute without delimination.contenttype: The content avaliability mode:D: Downloadable. Allows copying.P: Premium. Copying is prohibited.M: Merchant. Seems to allow copying.
contentid: The content's ID. This uses the respective<item>element'scontentidattribute.partnerid: The content partner ID. If one is not set in the Messenger Content Package Document, a value of-1is used.stamp: The PKCS#7 signature. Required for signed content, like Winks, Dynamic Display Pictures and Dynamic Backgrounds.avatarid: Used in down-level Dynamic Display Pictures. This is always6AD16E96-BC60-401B-89E2-5BB545DD2BF0.avatarcontentid: Used in down-level Dynamic Display Pictures. This is the SHA1 hash of the Dynamic Display Picture cabinet associated with the down-level image.
# Examples
NOTE: The XML in these examples has been exploded for visibility and formatting reasons.
# Plain
<msnobj
Creator="example@hotmail.com"
Size="889"
Type="2"
Location="example.png"
Friendly="AAA="
SHA1D="L/Q/zm2QjISFKvv2HBmxLr9lox8="
SHA1C="MA0ktY4VStXZ0amX5uQyosUTOak="
/>
# URL Encoded
%3Cmsnobj
%20Creator%3D%22example%40hotmail.com%22
%20Size%3D%2225235%22
%20Type%3D%223%22
%20Location%3D%22uexA4DE.dat%22
%20Friendly%3D%22AAA%3D%22
%20SHA1D%3D%22vP1ppB+xiFQ8ceZivRe0uCaYLIU%3D%22
%20SHA1C%3D%22DBRJPnGb+wBYawENkdor1bOdYUs%3D%22
%2F%3E
# XML Encoded
<msnobj
Creator="example%40hotmail.com"
Type="14"
SHA1D="2KLAaGhA2etdJPm61taqpbuGyd8="
Size="267"
Location="0"
Friendly="RQB4AGEAbQBwAGwAZQAgAEwAbwBjAGEAdABpAG8AbgAgADEAAAA="
/>
# Location XML
Sent by Client Versions 8.1.0064 to 8.1.0068 for the "Share my location" feature.
# RootThis element has two children:
<Name>: Described below.<Location>: Described below.
This element has only one attribute:
name: The display name of the location.
This element has two children:
<Latlong>: Described below.<Address>: Described below.
This element has five attributes:
lat: The latitude.long: The longitude.precision: The precision of the location information.3works.
This element has five attributes:
street: The street address.city: The city name.state: The state name.code: The post code or ZIP code.country: The country name.
# Example
NOTE: The XML in this example has been exploded for visibility and formatting reasons.
<Root>
<Name
name="Example Location 1"
></Name>
<Location>
<Latlong
lat="0.000000"
long="0.000000"
precision="3"
></Latlong>
<Address
street="123 Example Street"
city="Example City"
state="Example State"
code="123456"
country="Example Country"
></Address>
</Location>
</Root>
# Messenger Content Package Document
The content.xml of a Messenger Content Cabinet is required for downloadable content.
This element contains one or more <item>[#item] or <item2>[#item2] elements.
This element has three attributes:
xmlns: This is usuallyhttp://messenger.msn.com/messengercontent/1.0. Atypeofdynamicbackgroundwill instead usehttp://messenger.msn.com/messengercontent/2.0.version: This is usually1.0. Atypeofdynamicbackgroundwill instead use2.0.type: The type of the<package>:theme: A theme pack.dynamicpicture: A Dynamic Display Picture.wink: A Wink.dynamicbackground: A Dynamic Background.
If the type of this <package> is a theme, this element has another four optional attributes:
partnerid: The partner ID. Not setting this treats it as-1.pg: The program code. Used for advertising tracking.packid: The package ID. Format is set by the partner.contentlocationurl: Used forMessengerContentInstaller.IndirectInstallContentto provide a content URL. If used, the<package>element should be empty.
If the type of this <package> is a dynamicpicture, this element has another two attributes:
xmlns:dynamicpicture: This is alwayshttp://messenger.msn.com/dynamicpicture/1.0.dynamicpicture:displayname: The Dynamic Display Picture's display name.
If the type of this <package> is a dynamicbackground, this element has another two attributes:
xmlns:dynamicbackground: This is alwayshttp://messenger.msn.com/dynamicbackground/2.0.dynamicbackground:name: The Dynamic Backgrounds' display name.
If the type of this <package> is a wink, this element has another two attributes:
xmlns:wink: This is alwayshttp://messenger.msn.com/winks/1.0.wink:displayname: The Wink's display name.
This element has three attributes:
type: The type of the<item>:background: A (static) background.usertile: A (static) display picture.emoticon: A emoticon.wink: A Wink (signature required).dynamicpicture: A Dynamic Display Picture (signature required).dynamicbackground: A Dynamic Background (signature required).downlevel: A down-level image. Only valid for a<package>typeofdynamicpicture.mood: A mood. Only valid for a<package>typeofdynamicpicture.downlevelimage: A down-level image. Only valid for a<package>typeofdynamicbackground.backgroundimage: A background image. Only valid for a<package>typeofdynamicbackground.animation: A foreground animation. Only valid for a<package>typeofdynamicbackgroundorwink.thumbnail: A thumbnail. Only valid for a<package>typeofwink.
mimetype: A MIME type. Usually animage/pngorimage/jpgor evenimage/gif. Messenger Content Cabinets useapplication/messengercontent. Removed in package version2.0.file: The filename to use for this<item>.
This element has only three optional attributes:
contenttype: The content avaliability mode. This should be set if the<package>this<item>belongs to has atypeoftheme.D: Downloadable. Allows copying.P: Premium. Copying is prohibited.M: Merchant. Seems to allow copying.
contentid: The content's ID. This should be unique. This should be set if the<package>this<item>belongs to has atypeoftheme.stamp: The PKCS#7 signature. Required for signed content, like Winks, Dynamic Display Pictures and Dynamic Backgrounds.
If the type of this <item> is a background, this element has another six attributes:
xmlns:background: This is alwayshttp://messenger.msn.com/background/1.0.background:url: The click-through URL. Only used forMessengerContentInstaller.IndirectInstallContent?background:text: The click-through text. Only used forMessengerContentInstaller.IndirectInstallContent?background:imptrackurl: The impression tracking URL. Only used forMessengerContentInstaller.IndirectInstallContent?background:default: If this istrue, this background will be set as the default background, otherwise, usefalse.background:displayname: The display name of the background.
If the type of this <item> is a usertile, this element has another three attributes:
xmlns:usertile: This is alwayshttp://messenger.msn.com/usertile/1.0.usertile:default: If this istrue, this display picture will be set as the default display picture, otherwise, usefalse.usertile:displayname: The display name of the display picture.
If the type of this <item> is a emoticon, this element has another four attributes:
xmlns:emoticon: This is alwayshttp://messenger.msn.com/emoticon/1.0.emoticon:namespaceprefix: The emoticon's namespace prefix.emoticon:displayname: The display name of the emoticon.emoticon:keysequence: The emoticon's keyboard shortcut. This should be unique.
If the type of this <item> is a mood, this element has another four attributes:
dynamicpicture:default: If this istrue, this mood is the default of the Dynamic Display Picture, otherwise, usefalse.dynamicpicture:name: The display name of this mood.dynamicpicture:parameter: The SWF parameters to change the mood.dynamicpicture:keysequence: A keyboard shortcut that activates this mood.
If the type of the <package> is dynamicbackground, and the type of this <item> is a animation,
this element has another thirteen optional attributes:
dynamicbackground:template: Unknown. This is usually1.dynamicbackground:chrome_red: The decimal (0-255) shade of red to color the interface.dynamicbackground:chrome_green: The decimal (0-255) shade of green to color the interface.dynamicbackground:chrome_blue: The decimal (0-255) shade of blue to color the interface.dynamicbackground:font_red: The decimal (0-255) shade of red to color the system text.dynamicbackground:font_green: The decimal (0-255) shade of green to color the system text.dynamicbackground:font_blue: The decimal (0-255) shade of blue to color the system text.dynamicbackground:margin_top: The decimal margin to offset the chat contents from the top of the window.dynamicbackground:margin_bottom: The decimal margin to offset the chat contents from the bottom of the window.dynamicbackground:margin_left: The decimal margin to offset the chat contents from the left of the window.dynamicbackground:margin_right: The decimal margin to offset the chat contents from the right of the window.dynamicbackground:nudge_hassound: Iftrue, nudges do not create their system sound, otherwise, usefalse.dynamicbackground:nudge_noshake: Iftrue, nudges do not shake the window, otherwise, usefalse.
If the type of the <package> is wink, and the type of this <item> is a animation,
this element has another two attributes:
wink:sizex: The horizontal size of the wink.wink:sizey: The vertical size of the wink.
If the type of the <item> is dynamicbackground, this element has another three attributes:
dynamicbackground:default: If this istrue, this Dynamic Background will be set as the default background, otherwise, usefalse.dynamicbackground:contentlocationurl: Unknown.dynamicbackground:displayname: The Dynamic Background's display name.
If the type of the <item> is scene, this element has another three attributes:
xmlns:scene: This is alwayshttp://messenger.msn.com/scene/1.0.scene:default: If this istrue, this scene will be set as the default scene, otherwise, usefalse.scene:displayname: The scene's display name.
If the type of the <item> is sound, this element has another three attributes:
xmlns:sound: This is alwayshttp://messenger.msn.com/sound/1.0.sound:default: If this istrue, this sound will be set as the default sound, otherwise, usefalse.sound:displayname: The sound's display name.
A newer version of <item> that was introduced with Client Version 7.5. Mostly used for Dynamic Backgrounds.
As an extension of <item>, all previous attributes apply.
This element has only one new child:
minver: This is a duplet that specifies the minimum Client Version before attempting to install this<item2>.
# Examples
# Standard content
<?xml version="1.0" encoding="UTF-8" ?>
<package
xmlns="http://messenger.msn.com/messengercontent/1.0"
version="1.0"
type="theme"
contenttype="P"
contentid="examplepack"
partnerid="EXAMPLE"
>
<item
xmlns:emoticon="http://messenger.msn.com/emoticon/1.0"
type="emoticon"
contentid="examplepack1"
contenttype="P"
mimetype="image/png"
file="19x19_example.png"
emoticon:namespaceprefix="EXAMPLE"
emoticon:displayname="Example Emoticon"
emoticon:keysequence="(Ex.)"
/>
<item
xmlns:usertile="http://messenger.msn.com/usertile/1.0"
type="usertile"
contentid="examplepack2"
contenttype="P"
mimetype="image/png"
file="96x96_example.png"
usertile:default="true"
usertile:displayname="Example User Tile"
/>
<item
xmlns:background="http://messenger.msn.com/background/1.0"
type="background"
contentid="examplepack3"
contenttype="P"
mimetype="image/png"
file="400x300_example.png"
background:default="true"
background:displayname="Example Background"
/>
</package>
# Indirect
<?xml version="1.0" encoding="UTF-8" ?>
<package contentlocationurl="http://example.com/content/example.mct" />