Anonymous

Changes

From IMFreedom Wiki
Bare Skeleton of Requesting the Address Book
==Retrieving the Address Book==
The address book is retrieved by posting this SOAP request to http://contacts.msn.com/abservice/abservice.asmx or https://contacts.msn.com/abservice/abservice.asmx for an encrypted connection.

POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABFindAll
Content-Type:text/xml; charset=utf-8
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Accept: */*
Host: contacts.msn.com
Content-Length: ''Variable Number''
Connection: Keep-Alive
Cache-Control: no-cache

<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>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>
<IsMigration>false</IsMigration>
<PartnerScenario>Initial</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader xmlns='http://www.msn.com/webservices/AddressBook'>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>''Variable''</TicketToken>
</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>

* deltasOnly: whether you want to receive a full or partial address book update
* lastChange: the time your address book was last synchronized
''deltasOnly and lastChange are only necessary if you want to do a partial address book update.''


The server will then reply with this response.

HTTP/1.1 200 OK
Date: Wed, 02 Apr 2008 03:17:04 GMT
Server: Microsoft-IIS/6.0
P3P:CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo"
X-Powered-By: ASP.NET
X-MSNSERVER: BAYABCHWBB128
X-AspNet-Version: 2.0.50727
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: ''Variable Number''

<?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>13.02.2514.0000</Version>
<CacheKey>''Base64 Encoded Data?''</CacheKey>
<CacheKeyChanged>''true|false''</CacheKeyChanged>
<PreferredHostName>by4.contacts.msn.com</PreferredHostName>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABFindAllResponse xmlns="http://www.msn.com/webservices/AddressBook">
<ABFindAllResult>
<groups>
<Group>
<groupId>''GUID''</groupId>
<groupInfo>
<annotations>
<Annotation>
<Name>MSN.IM.Display</Name>
<Value>1</Value>
</Annotation>
''The rest of these annotations have only been seen so far on ContactType of "Me"''
<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>1</Value>
</Annotation>
<Annotation>
<Name>MSN.IM.RoamLiveProperties</Name>
<Value>1</Value>
</Annotation>
</annotations>
<groupType>c8529ce2-6ead-434d-881f-341e17db3ff8</groupType>
<name>''Group Name''</name>
<IsNotMobileVisible>''true|false''</IsNotMobileVisible>
<IsPrivate>''true|false''</IsPrivate>
</groupInfo>
<propertiesChanged />
<fDeleted>''true|false''</fDeleted>
<lastChange>''ISO 8601 timestamp''</lastChange>
</Group>
...
</groups>
<contacts>
<Contact>
<contactId>''GUID''</contactId>
<contactInfo>
<groupIds>
<guid>''GUID''</guid>
</groupIds>
<emails>
<ContactEmail>
<contactEmailType>ContactEmailPersonal</contactEmailType>
<email>''Email Address''</email>
<isMessengerEnabled>''true|false''</isMessengerEnabled>
<Capability>0</Capability>
<MessengerEnabledExternally>''true|false''</MessengerEnabledExternally>
<propertiesChanged />
</ContactEmail>
</emails>
<contactType>''Me|Regular|LivePending''</contactType>
<quickName>''Quick Name''</quickName>
<firstName>''First Name''</firstName>
<lastName>''Last Name''</lastName>
<passportName>''MSN Passport (Email Address)''</passportName>
<IsPassportNameHidden>''true|false''</IsPassportNameHidden>
<displayName>''Display Name''</displayName>
<puid>0</puid>
<CID>''Contact Id (Number, some prepended with a hyphen)''</CID>
<IsNotMobileVisible>''true|false''</IsNotMobileVisible>
<isMobileIMEnabled>''true|false''</isMobileIMEnabled>
<isMessengerUser>''true|false''</isMessengerUser>
<isFavorite>''true|false''</isFavorite>
<isSmtp>''true|false''</isSmtp>
<hasSpace>''true|false''</hasSpace>
<spotWatchState>NoDevice</spotWatchState>
<birthdate>''ISO 8601 timestamp''</birthdate>
<primaryEmailType>ContactEmailPersonal</primaryEmailType>
<PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
<PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
<IsPrivate>''true|false''</IsPrivate>
<Gender>Unspecified</Gender>
<TimeZone>None</TimeZone>
</contactInfo>
<propertiesChanged />
<fDeleted>false</fDeleted>
<lastChange>''ISO 8601 timestamp''</lastChange>
</Contact>
...
</contacts>
<CircleResult>
<CircleTicket>
&amp;lt;?xml version="1.0" encoding="utf-16"?&amp;gt;
&amp;lt;SignedTicket xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" ver="1" keyVer="1"&amp;gt;
&lt;Data&amp;gt;''Base64 Encoded "Ticket"''&amp;lt;/Sig&amp;gt;
&amp;lt;/SignedTicket&amp;gt;
</CircleTicket>
</CircleResult>
<ab>
<abId>00000000-0000-0000-0000-000000000000</abId>
<abInfo>
<ownerPuid>0</ownerPuid>
<OwnerCID>''Number''</OwnerCID>
<ownerEmail>''Email Address</ownerEmail>
<fDefault>''true|false''</fDefault>
<joinedNamespace>''true|false''</joinedNamespace>
<IsBot>''true|false''</IsBot>
<IsParentManaged>''true|false''</IsParentManaged>
<SubscribeExternalPartner>''true|false''</SubscribeExternalPartner>
<NotifyExternalPartner>''true|false''</NotifyExternalPartner>
<AddressBookType>Individual</AddressBookType>
<MessengerApplicationServiceCreated>false</MessengerApplicationServiceCreated>
</abInfo>
<lastChange>''ISO 8601 timestamp''</lastChange>
<DynamicItemLastChanged>''ISO 8601 timestamp''</DynamicItemLastChanged>
<RecentActivityItemLastChanged>''ISO 8601 timestamp''</RecentActivityItemLastChanged>
<createDate>''ISO 8601 timestamp''</createDate>
<propertiesChanged />
</ab>
</ABFindAllResult>
</ABFindAllResponse>
</soap:Body>
</soap:Envelope>

*CID: is zero for email only contacts
''passportName and displayName aren't in email only contacts''
5

edits