Protocols/MSNP/MSNP13/Contact List

From NINA Wiki
Jump to navigation Jump to search
MSN Protocol Version 13

Overview

Starting with Windows Live Messenger 8, the client no longer synchronizes its list with the SYN command. Instead, it will do many SOAP requests to fetch the address book, which now also contains your forward list(FL), and fetch the other lists(Allow, Block and Reverse List). The users properties will also be sent with these SOAP requests, if required. First it request the membership lists then the address book.

Requesting Membership lists

SOAP Request

Allow, Block, Reverse and Pending Lists use a different SOAP action than address book to fetch them. The POST url is http://contacts.msn.com/abservice/SharingService.asmx and the SOAP action is "http://www.msn.com/webservices/AddressBook/FindMembership" Note: Even though this section is found in MSNP13, you may and should use MSNP15 and the TickToken. Meaning you won't have to set any cookies, but use a token in your soap request insted. Visit TicketTokens For more details.

POST /abservice/SharingService.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/FindMembership
Content-Type: text/xml; charset=utf-8
Cookie: MSPAuth=Removed
Host: contacts.msn.com
Content-Length: Variable
<?xml version='1.0' encoding='utf-8'?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
       <ABApplicationHeader xmlns="http://www.msn.com/webservices/AddressBook">
           <ApplicationId xmlns="http://www.msn.com/webservices/AddressBook">CFE80F9D-180F-4399-82AB-413F33A1FA11</ApplicationId>
           <IsMigration xmlns="http://www.msn.com/webservices/AddressBook">false</IsMigration>
           <PartnerScenario xmlns="http://www.msn.com/webservices/AddressBook">Initial</PartnerScenario>
       </ABApplicationHeader>
       <ABAuthHeader xmlns="http://www.msn.com/webservices/AddressBook">
           <ManagedGroupRequest xmlns="http://www.msn.com/webservices/AddressBook">false</ManagedGroupRequest>
       </ABAuthHeader>
   </soap:Header>
   <soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
       <FindMembership xmlns="http://www.msn.com/webservices/AddressBook">
           <serviceFilter xmlns="http://www.msn.com/webservices/AddressBook">
               <Types xmlns="http://www.msn.com/webservices/AddressBook">
                   <ServiceType xmlns="http://www.msn.com/webservices/AddressBook">Messenger</ServiceType>
                   <ServiceType xmlns="http://www.msn.com/webservices/AddressBook">Invitation</ServiceType>
                   <ServiceType xmlns="http://www.msn.com/webservices/AddressBook">SocialNetwork</ServiceType>
                   <ServiceType xmlns="http://www.msn.com/webservices/AddressBook">Space</ServiceType>
                   <ServiceType xmlns="http://www.msn.com/webservices/AddressBook">Profile</ServiceType>
               </Types>
           </serviceFilter>
Only add these tags to request an update of membership list
           <View xmlns="http://www.msn.com/webservices/AddressBook">Full</View>
           <deltasOnly xmlns="http://www.msn.com/webservices/AddressBook">true</deltasOnly>
           <lastChange xmlns="http://www.msn.com/webservices/AddressBook">2006-03-29T07:29:42.5200000-08:00</lastChange>
       </FindMembership>
   </soap:Body>
</soap:Envelope>

FindMembership can fetch differents types of service. This is what the official client send, but maybe only the Messenger and Space service are sufficent for third-party clients (Need to confirm this). Also, you can request to only receive the updated item since the last connection, see comment in SOAP request.

SOAP Reply

Here a snippet of what you receive from this SOAP action.

<?xml version='1.0' encoding='utf-8'?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
       <ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
           <Version xmlns="http://www.msn.com/webservices/AddressBook">11.02.1331.0000</Version>
       </ServiceHeader>
   </soap:Header>
   <soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
       <FindMembershipResponse xmlns="http://www.msn.com/webservices/AddressBook">
           <FindMembershipResult xmlns="http://www.msn.com/webservices/AddressBook">
               <Services xmlns="http://www.msn.com/webservices/AddressBook">
                   <Service xmlns="http://www.msn.com/webservices/AddressBook">
                       <Memberships xmlns="http://www.msn.com/webservices/AddressBook">
                           <Membership xmlns="http://www.msn.com/webservices/AddressBook">
                               <MemberRole xmlns="http://www.msn.com/webservices/AddressBook">Allow</MemberRole>
                               <Members xmlns="http://www.msn.com/webservices/AddressBook">
                                   <Member xmlns="http://www.msn.com/webservices/AddressBook" xsi:type="PassportMember" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
                                       <MembershipId xmlns="http://www.msn.com/webservices/AddressBook">2</MembershipId>
                                       <Type xmlns="http://www.msn.com/webservices/AddressBook">Passport</Type>
                                       <State xmlns="http://www.msn.com/webservices/AddressBook">Accepted</State>
                                       <Deleted xmlns="http://www.msn.com/webservices/AddressBook">false</Deleted>
                                       <LastChanged xmlns="http://www.msn.com/webservices/AddressBook">2005-08-05T17:34:12.7870000-07:00</LastChanged>
                                       <Changes xmlns="http://www.msn.com/webservices/AddressBook"/>
                                       <PassportName xmlns="http://www.msn.com/webservices/AddressBook">alice@passport.com</PassportName>
                                       <IsPassportNameHidden xmlns="http://www.msn.com/webservices/AddressBook">false</IsPassportNameHidden>
                                       <PassportId xmlns="http://www.msn.com/webservices/AddressBook">0</PassportId>
                                       <CID xmlns="http://www.msn.com/webservices/AddressBook">0</CID>
                                       <PassportChanges xmlns="http://www.msn.com/webservices/AddressBook"/>
                                   </Member>
                               </Members>
                           </Membership>
                           <Membership xmlns="http://www.msn.com/webservices/AddressBook">
                               <MemberRole xmlns="http://www.msn.com/webservices/AddressBook">Block</MemberRole>
                               <Members xmlns="http://www.msn.com/webservices/AddressBook">
                                   <Member xmlns="http://www.msn.com/webservices/AddressBook" xsi:type="PassportMember" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
                                       <MembershipId xmlns="http://www.msn.com/webservices/AddressBook">249</MembershipId>
                                       <Type xmlns="http://www.msn.com/webservices/AddressBook">Passport</Type>
                                       <State xmlns="http://www.msn.com/webservices/AddressBook">Accepted</State>
                                       <Deleted xmlns="http://www.msn.com/webservices/AddressBook">false</Deleted>
                                       <LastChanged xmlns="http://www.msn.com/webservices/AddressBook">2006-02-07T16:40:07.2230000-08:00</LastChanged>
                                       <Changes xmlns="http://www.msn.com/webservices/AddressBook"/>
                                       <PassportName xmlns="http://www.msn.com/webservices/AddressBook">blocked@passport.com</PassportName>
                                       <IsPassportNameHidden xmlns="http://www.msn.com/webservices/AddressBook">false</IsPassportNameHidden>
                                       <PassportId xmlns="http://www.msn.com/webservices/AddressBook">0</PassportId>
                                       <CID xmlns="http://www.msn.com/webservices/AddressBook">0</CID>
                                       <PassportChanges xmlns="http://www.msn.com/webservices/AddressBook"/>
                                   </Member>
                               </Members>
                           </Membership>
                           <Membership xmlns="http://www.msn.com/webservices/AddressBook">
                               <MemberRole xmlns="http://www.msn.com/webservices/AddressBook">Reverse</MemberRole>
                               <Members xmlns="http://www.msn.com/webservices/AddressBook">
                                   <Member xmlns="http://www.msn.com/webservices/AddressBook" xsi:type="PassportMember" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
                                       <MembershipId xmlns="http://www.msn.com/webservices/AddressBook">58</MembershipId>
                                       <Type xmlns="http://www.msn.com/webservices/AddressBook">Passport</Type>
                                       <DisplayName xmlns="http://www.msn.com/webservices/AddressBook">Hello NINA Wiki</DisplayName>
                                       <State xmlns="http://www.msn.com/webservices/AddressBook">Accepted</State>
                                       <Deleted xmlns="http://www.msn.com/webservices/AddressBook">false</Deleted>
                                       <LastChanged xmlns="http://www.msn.com/webservices/AddressBook">2005-08-05T17:39:53.3900000-07:00</LastChanged>
                                       <Changes xmlns="http://www.msn.com/webservices/AddressBook"/>
                                       <PassportName xmlns="http://www.msn.com/webservices/AddressBook">test@passport.com</PassportName>
                                       <IsPassportNameHidden xmlns="http://www.msn.com/webservices/AddressBook">false</IsPassportNameHidden>
                                       <PassportId xmlns="http://www.msn.com/webservices/AddressBook">0</PassportId>
                                       <CID xmlns="http://www.msn.com/webservices/AddressBook">0</CID>
                                       <PassportChanges xmlns="http://www.msn.com/webservices/AddressBook"/>
                                   </Member>
                               </Members>
                           </Membership>
                           <Membership xmlns="http://www.msn.com/webservices/AddressBook">
                               <MemberRole xmlns="http://www.msn.com/webservices/AddressBook">Pending</MemberRole>
                               <Members xmlns="http://www.msn.com/webservices/AddressBook">
                                   <Member xmlns="http://www.msn.com/webservices/AddressBook" xsi:type="PassportMember" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
                                       <MembershipId xmlns="http://www.msn.com/webservices/AddressBook">59</MembershipId>
                                       <Type xmlns="http://www.msn.com/webservices/AddressBook">Passport</Type>
                                       <DisplayName xmlns="http://www.msn.com/webservices/AddressBook">When will you remove me from your PL ?</DisplayName>
                                       <State xmlns="http://www.msn.com/webservices/AddressBook">Accepted</State>
                                       <Deleted xmlns="http://www.msn.com/webservices/AddressBook">false</Deleted>
                                       <LastChanged xmlns="http://www.msn.com/webservices/AddressBook">2005-08-05T17:39:53.3900000-07:00</LastChanged>
                                       <Changes xmlns="http://www.msn.com/webservices/AddressBook"/>
                                       <PassportName xmlns="http://www.msn.com/webservices/AddressBook">pending@passport.com</PassportName>
                                       <IsPassportNameHidden xmlns="http://www.msn.com/webservices/AddressBook">false</IsPassportNameHidden>
                                       <PassportId xmlns="http://www.msn.com/webservices/AddressBook">0</PassportId>
                                       <CID xmlns="http://www.msn.com/webservices/AddressBook">0</CID>
                                       <PassportChanges xmlns="http://www.msn.com/webservices/AddressBook"/>
                                   </Member>
                               </Members>
                           </Membership>
                       </Memberships>
                       <Info xmlns="http://www.msn.com/webservices/AddressBook">
                           <Handle xmlns="http://www.msn.com/webservices/AddressBook">
                               <Id xmlns="http://www.msn.com/webservices/AddressBook">1</Id>
                               <Type xmlns="http://www.msn.com/webservices/AddressBook">Messenger</Type>
                               <ForeignId xmlns="http://www.msn.com/webservices/AddressBook"/>
                           </Handle>
                           <InverseRequired xmlns="http://www.msn.com/webservices/AddressBook">false</InverseRequired>
                           <AuthorizationCriteria xmlns="http://www.msn.com/webservices/AddressBook">2ndDegreeSocNet;MsgrAllow</AuthorizationCriteria>
                       </Info>
                       <Changes xmlns="http://www.msn.com/webservices/AddressBook"/>
                       <LastChange xmlns="http://www.msn.com/webservices/AddressBook">2006-04-04T00:22:51.2030000-07:00</LastChange>
                       <Deleted xmlns="http://www.msn.com/webservices/AddressBook">false</Deleted>
                   </Service>
Other services stripped out
               </Services>
               <OwnerNamespace xmlns="http://www.msn.com/webservices/AddressBook">
                   <Info xmlns="http://www.msn.com/webservices/AddressBook">
                       <Handle xmlns="http://www.msn.com/webservices/AddressBook">
                           <Id xmlns="http://www.msn.com/webservices/AddressBook">00000000-0000-0000-0003-000082fe89ed</Id>
                           <IsPassportNameHidden xmlns="http://www.msn.com/webservices/AddressBook">false</IsPassportNameHidden>
                           <CID xmlns="http://www.msn.com/webservices/AddressBook">0</CID>
                       </Handle>
                       <CreatorPuid xmlns="http://www.msn.com/webservices/AddressBook">0</CreatorPuid>
                       <CreatorCID xmlns="http://www.msn.com/webservices/AddressBook">0</CreatorCID>
                       <CreatorPassportName xmlns="http://www.msn.com/webservices/AddressBook">owner@passport.com</CreatorPassportName>
                   </Info>
                   <Changes xmlns="http://www.msn.com/webservices/AddressBook"/>
                   <CreateDate xmlns="http://www.msn.com/webservices/AddressBook">2005-08-05T14:52:30.2130000-07:00</CreateDate>
                   <LastChange xmlns="http://www.msn.com/webservices/AddressBook">2006-04-04T13:51:55.4830000-07:00</LastChange>
               </OwnerNamespace>
           </FindMembershipResult>
       </FindMembershipResponse>
   </soap:Body>
</soap:Envelope>

The result give the members for the services you requested.

  • MemberRole can be Allow, Block, Reverse, Pending
  • xsi:type= attribute in Member tag. Determine the member type. Know values are PassportMember, EveryoneMember, RoleMember

MSNP14 add new member type,

<Member xsi:type="EmailMember">
 <MembershipId>14</MembershipId>
 <Type>Email</Type>
 <State>Accepted</State>
 <Annotations>
  <Annotation>
   <Name>MSN.IM.BuddyType</Name>
   <Value>32:</Value>
  </Annotation>
 </Annotations>
 <Deleted>false</Deleted>
 <LastChanged>2006-07-15T07:21:26.83-07:00</LastChanged>
 <Changes />
 <Email>someone@yahoo.com</Email>
</Member>


Requesting Address Book

SOAP Request

To request your properties and contact list, you should do a SOAP POST request to http://contacts.msn.com/abservice/abservice.asmx. You may also use the SSL gateway (simply change http:// into https://) if you prefer secure transfers.

In this request, you should add a cookie, namely your MSPAuth "ticket" (from the Initial Profile Message). This ticket identifies you, and as you can see in the example below your e-mail address will not be included anywhere in the request body.

Note! If you are requesting the file for the first time, or if you wish to query the full contact list, you must use the time stamp 0001-01-01T00:00:00.0000000-08:00. This stamp indicates that you wish to receive the whole contact list, and not just the updated items. It is, however, recommended you cache the contact list! (due to the amount of bandwidth used for this).

POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABFindAll
Content-Type: text/xml; charset=utf-8
Cookie: MSPAuth=Removed
Host: contacts.msn.com
Content-Length: Variable
<?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" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
	<soap:Header>
		<ABApplicationHeader xmlns="http://www.msn.com/webservices/AddressBook">
			<ApplicationId>CFE80F9D-180F-4399-82AB-413F33A1FA11</ApplicationId>
			<IsMigration>false</IsMigration>
			<PartnerScenario>Initial</PartnerScenario>
		</ABApplicationHeader>
		<ABAuthHeader xmlns="http://www.msn.com/webservices/AddressBook">
			<ManagedGroupRequest>false</ManagedGroupRequest>
		</ABAuthHeader>
	</soap:Header>
	<soap:Body>
		<ABFindAll xmlns="http://www.msn.com/webservices/AddressBook">
			<abId>00000000-0000-0000-0000-000000000000</abId>
			<abView>Full</abView>
			<deltasOnly>true</deltasOnly>
			<lastChange>0001-01-01T00:00:00.0000000-08:00</lastChange>
		</ABFindAll>
	</soap:Body>
</soap:Envelope>
  • IsMigration: Speculated to be the opposite of the ABCHMigrated field in your initial profile (0=true, 1=false).
  • abId: Address book ID, has only been observed as being a null-GUID.
  • abView: Only observed as being Full. No other values are known at this time.
  • deltasOnly: Indicates whether you wish to receive the full address book or only the udpates since lastChange.
  • lastChange: An Protocols/MSNP/ISO 8601 timestamp. This timestamp must be either something the server sent to you before, or the default value mentioned above!

SOAP Reply

When all goes well you will receive a SOAP reply containing your address book (and thus your contact list), and your own profile information, including your friendly name, mobile settings, etc.

HTTP/1.1 200 OK
Date: Fri, 11 Nov 2005 23:55:09 GMT
Server: Microsoft-IIS/6.0
P3P:CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo"
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 2207
<?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:Header>
        <ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
            <Version>11.01.0922.0000</Version>
        </ServiceHeader>
    </soap:Header>
    <soap:Body>
        <ABFindAllResponse xmlns="http://www.msn.com/webservices/AddressBook">
            <ABFindAllResult>
                <contacts>
                    <Contact>
                        <contactId> Removed </contactId>
                        <contactInfo>
                        <annotations>
                            <Annotation>
                                <Name>MSN.IM.MBEA</Name>
                                <Value>0</Value>
                            </Annotation>
                            <Annotation>
                                <Name>MSN.IM.GTC</Name>
                                <Value>1</Value>
                            </Annotation>
                            <Annotation>
                                <Name>MSN.IM.BLP</Name>
                                <Value>0</Value>
                            </Annotation>
                        </annotations>
                        <contactType>Me</contactType>
                        <quickName>Q</quickName>
                        <passportName> Removed </passportName>
                        <IsPassportNameHidden>false</IsPassportNameHidden>
                        <displayName>Inky | Hello, World from WLM</displayName>
                        <puid>0</puid>
                        <CID>0</CID>
                        <IsNotMobileVisible>false</IsNotMobileVisible>
                        <isMobileIMEnabled>false</isMobileIMEnabled>
                        <isMessengerUser>false</isMessengerUser>
                        <isFavorite>false</isFavorite>
                        <isSmtp>false</isSmtp>
                        <hasSpace>true</hasSpace>
                        <spotWatchState>NoDevice</spotWatchState>
                        <birthdate>0001-01-01T00:00:00.0000000-08:00</birthdate>
                        <primaryEmailType>ContactEmailPersonal</primaryEmailType>
                        <PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
                        <PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
                        <IsPrivate>false</IsPrivate>
                        <Gender>Unspecified</Gender>
                        <TimeZone>None</TimeZone>
                    </contactInfo>
                    <propertiesChanged />
                    <fDeleted>false</fDeleted>
                    <lastChange>2005-11-11T15:55:03.2600000-08:00</lastChange>
                </Contact>
            </contacts>
            <ab>
            <abId>00000000-0000-0000-0000-000000000000</abId>
                <abInfo>
                    <ownerPuid>0</ownerPuid>
                    <OwnerCID>0</OwnerCID>
                    <ownerEmail> Removed </ownerEmail>
                    <fDefault>true</fDefault>
                    <joinedNamespace>false</joinedNamespace>
                </abInfo>
                <lastChange>2005-11-11T15:55:03.2600000-08:00</lastChange>
                <DynamicItemLastChanged>2005-11-09T09:16:56.2970000-08:00</DynamicItemLastChanged>
                <createDate>2003-07-14T15:46:20.6500000-07:00</createDate>
                <propertiesChanged />
            </ab>
           </ABFindAllResult>
       </ABFindAllResponse>
   </soap:Body>
</soap:Envelope>

We will not discuss all of these fields, for most of them are pretty straight forward, but here is a small overview of those fields which are most important:

  • contactType: Each contact has a type. At the moment only the type Me, Regular and Messenger are known, but another contact type is most like something along the lines of AddressBook, to indicate a contact which is stored in your AB only, and not on your contact list.
  • hasSpace: Indicates whether the contact has a Windows Live Space (see below) or not.
  • lastChange: The timestamp of the latest change for your address book. This timestamp can be used the next time if you have cached the original address book contents.
  • DynamicItemLastChanged: The timestamp of the latest changes to Dynamic Items, such as Gleams (the little orange asteriks to indicate a new blog post). See also #Dynamic_Items.

Dynamic Items

Gleams

To request the latest updates from your contacts blogs, you must now do a seperate call to the the same page as with querying your address book, but then include two special XML tags. While this may seem odd, it actually saves quite a lot of bandwidth compared to older methods ala MSN Messenger 7.x.

You cannot request all updated blogs and your address book at once. You must first query your address book, and then do a second request to fetch the new blog items (if your client supports them, of course). Note that is of course a smart idea to store the last changed date (to view updated blog posts only). However, if this date is unknown, you may use the default timestamp 0001-01-01T00:00:00.0000000-08:00.

SOAP Request

POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABFindAll
Content-Type: text/xml; charset=utf-8
Cookie: MSPAuth=Removed
Host: contacts.msn.com
Content-Length: 1045
<?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" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
	<soap:Header>
		<ABApplicationHeader xmlns="http://www.msn.com/webservices/AddressBook">
			<ApplicationId>CFE80F9D-180F-4399-82AB-413F33A1FA11</ApplicationId>
			<IsMigration>false</IsMigration>
			<PartnerScenario>Initial</PartnerScenario>
		</ABApplicationHeader>
		<ABAuthHeader xmlns="http://www.msn.com/webservices/AddressBook">
			<ManagedGroupRequest>false</ManagedGroupRequest>
		</ABAuthHeader>
	</soap:Header>
	<soap:Body>
		<ABFindAll xmlns="http://www.msn.com/webservices/AddressBook">
			<abId>00000000-0000-0000-0000-000000000000</abId>
			<abView>Full</abView>
			<deltasOnly>true</deltasOnly>
			<lastChange>0001-01-01T00:00:00.0000000-08:00</lastChange>
			<dynamicItemView>Gleam</dynamicItemView>
			<dynamicItemLastChange>0001-01-01T00:00:00.0000000-08:00</dynamicItemLastChange>
		</ABFindAll>
	</soap:Body>
</soap:Envelope>

SOAP Reply

HTTP/1.1 200 OK
Date: Fri, 11 Nov 2005 23:55:09 GMT
Server: Microsoft-IIS/6.0
P3P:CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo"
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 2207
<?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:Header>
        <ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
            <Version>11.01.0922.0000</Version>
        </ServiceHeader>
    </soap:Header>
    <soap:Body>
        <ABFindAllResponse xmlns="http://www.msn.com/webservices/AddressBook">
             Updated blog information goes here? 
            <ABFindAllResult>
                <ab>
                    <abId>00000000-0000-0000-0000-000000000000</abId>
                    <abInfo>
                        <ownerPuid>0</ownerPuid>
                        <OwnerCID>-4739586129731996489</OwnerCID>
                        <ownerEmail> Removed </ownerEmail>
                        <fDefault>true</fDefault>
                        <joinedNamespace>false</joinedNamespace>
                    </abInfo>
                    <lastChange>2005-12-26T08:48:23.0300000-08:00</lastChange>
                    <DynamicItemLastChanged>0001-01-01T00:00:00.0000000-08:00</DynamicItemLastChanged>
                    <createDate>2005-12-26T08:48:23.0300000-08:00</createDate>
                    <propertiesChanged />
                </ab>
            </ABFindAllResult>
        </ABFindAllResponse>
    </soap:Body>
</soap:Envelope>

NOTE! The reply to this request is still (partially) unknown. More information will be added later.

WSDL and XML schemas

Here the WSDL and XML schemas for the web service descripted here, you can use them to generate a web service binding for your programming language.

MSN Addressbook/Sharing Service WSDL & XSD files