Merge remote branch 'chat-interface-plugins/msn-plugin' into 1.0.x

This commit is contained in:
Craig Andrews 2010-08-18 12:41:50 -04:00
commit 11661e62df
14 changed files with 7916 additions and 0 deletions

216
plugins/Msn/MsnPlugin.php Normal file
View File

@ -0,0 +1,216 @@
<?php
/**
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009, StatusNet, Inc.
*
* Send and receive notices using the MSN network
*
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category IM
* @package StatusNet
* @author Luke Fitzgerald <lw.fitzgerald@googlemail.com>
* @copyright 2010 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
if (!defined('STATUSNET')) {
// This check helps protect against security problems;
// your code file can't be executed directly from the web.
exit(1);
}
// We bundle the phpmsnclass library...
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/phpmsnclass');
/**
* Plugin for MSN
*
* @category Plugin
* @package StatusNet
* @author Luke Fitzgerald <lw.fitzgerald@googlemail.com>
* @copyright 2010 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
class MsnPlugin extends ImPlugin {
public $user = null;
public $password = null;
public $nickname = null;
public $transport = 'msn';
/**
* Get the internationalized/translated display name of this IM service
*
* @return string Name of service
*/
public function getDisplayName() {
return _m('MSN');
}
/**
* Normalize a screenname for comparison
*
* @param string $screenname screenname to normalize
* @return string an equivalent screenname in normalized form
*/
public function normalize($screenname) {
$screenname = str_replace(" ","", $screenname);
return strtolower($screenname);
}
/**
* Get the screenname of the daemon that sends and receives messages
*
* @return string Screenname
*/
public function daemon_screenname() {
return $this->user;
}
/**
* Validate (ensure the validity of) a screenname
*
* @param string $screenname screenname to validate
* @return boolean
*/
public function validate($screenname) {
return Validate::email($screenname, common_config('email', 'check_domain'));
}
/**
* Load related modules when needed
*
* @param string $cls Name of the class to be loaded
* @return boolean hook value; true means continue processing, false means stop.
*/
public function onAutoload($cls) {
$dir = dirname(__FILE__);
switch ($cls) {
case 'MSN':
require_once(INSTALLDIR.'/plugins/Msn/extlib/phpmsnclass/msn.class.php');
return false;
case 'MsnManager':
case 'Msn_waiting_message':
include_once $dir . '/'.strtolower($cls).'.php';
return false;
default:
return true;
}
}
/*
* Start manager on daemon start
*
* @return boolean
*/
public function onStartImDaemonIoManagers(&$classes) {
parent::onStartImDaemonIoManagers(&$classes);
$classes[] = new MsnManager($this); // handles sending/receiving
return true;
}
/**
* Ensure the database table is present
*
*/
public function onCheckSchema() {
$schema = Schema::get();
// For storing messages while sessions become ready
$schema->ensureTable('msn_waiting_message',
array(new ColumnDef('id', 'integer', null,
false, 'PRI', null, null, true),
new ColumnDef('screenname', 'varchar', 255, false),
new ColumnDef('message', 'text', null, false),
new ColumnDef('created', 'datetime', null, false),
new ColumnDef('claimed', 'datetime')));
return true;
}
/**
* Get a microid URI for the given screenname
*
* @param string $screenname
* @return string microid URI
*/
public function microiduri($screenname) {
return 'msnim:' . $screenname;
}
/**
* Send a message to a given screenname
*
* @param string $screenname Screenname to send to
* @param string $body Text to send
* @return boolean success value
*/
public function send_message($screenname, $body) {
$this->enqueue_outgoing_raw(array('to' => $screenname, 'message' => $body));
return true;
}
/**
* Accept a queued input message.
*
* @param array $data Data
* @return true if processing completed, false if message should be reprocessed
*/
public function receive_raw_message($data) {
$this->handle_incoming($data['sender'], $data['message']);
return true;
}
/**
* Initialize plugin
*
* @return boolean
*/
public function initialize() {
if (!isset($this->user)) {
throw new Exception("Must specify a user");
}
if (!isset($this->password)) {
throw new Exception("Must specify a password");
}
if (!isset($this->nickname)) {
throw new Exception("Must specify a nickname");
}
return true;
}
/**
* Get plugin information
*
* @param array $versions array to insert information into
* @return void
*/
public function onPluginVersion(&$versions) {
$versions[] = array(
'name' => 'MSN',
'version' => STATUSNET_VERSION,
'author' => 'Luke Fitzgerald',
'homepage' => 'http://status.net/wiki/Plugin:MSN',
'rawdescription' =>
_m('The MSN plugin allows users to send and receive notices over the MSN network.')
);
return true;
}
}

32
plugins/Msn/README Normal file
View File

@ -0,0 +1,32 @@
The MSN plugin allows users to send and receive notices over the MSN network.
Required PHP extensions:
curl pcre mhash mcrypt bcmath
Installation
============
add "addPlugin('msn',
array('setting'=>'value', 'setting2'=>'value2', ...);"
to the bottom of your config.php
scripts/imdaemon.php included with StatusNet must be running. It will be started by
the plugin along with their other daemons when you run scripts/startdaemons.sh.
See the StatusNet README for more about queuing and daemons.
Settings
========
user*: username (screenname) to use when logging into MSN
password*: password for that user
nickname*: nickname for the bot
* required
default values are in (parenthesis)
Example
=======
addPlugin('msn', array(
'user' => '...',
'password' => '...',
'nickname' => '...'
));

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
#!/usr/bin/php
<?php
global $msn;
function ChildSignalFunction($signal)
{
global $msn;
switch($signal)
{
case SIGTRAP:
case SIGTERM:
case SIGHUP:
if(is_object($msn)) $msn->End();
return;
}
}
// network:
// 1: WLM/MSN
// 2: LCS
// 4: Mobile Phones
// 32: Yahoo!
function getNetworkName($network)
{
switch ($network)
{
case 1:
return 'WLM/MSN';
case 2:
return 'LCS';
case 4:
return 'Mobile Phones';
case 32:
return 'Yahoo!';
}
return "Unknown ($network)";
}
require_once('config.php');
include_once('msn.class.php');
$msn = new MSN(array(
'user' => 'xxx@hotmail.com',
'password' => 'mypassword',
'alias' => 'myalias',
'psm' => 'psm',
// 'PhotoSticker' => 'msntitle.jpg',
'debug'=> true,
/* 'Emotions' => array(
'aaa' => 'emotion.gif'
),*/
));
$fp=fopen(MSN_CLASS_LOG_DIR.DIRECTORY_SEPARATOR.'msnbot.pid', 'wt');
if($fp)
{
fputs($fp,posix_getpid());
fclose($fp);
}
declare(ticks = 1);
$msn->Run();
$msn->log_message("done!");
@unlink(dirname($_SERVER['argv'][0]).DIRECTORY_SEPARATOR.'log'.DIRECTORY_SEPARATOR.'msnbot.pid');

View File

@ -0,0 +1,23 @@
K 25
svn:wc:ra_dav:version-url
V 41
/svn/!svn/ver/39/trunk/phpmsnclassv2/soap
END
msnab_servicetypes.xsd
K 25
svn:wc:ra_dav:version-url
V 64
/svn/!svn/ver/39/trunk/phpmsnclassv2/soap/msnab_servicetypes.xsd
END
msnab_sharingservice.wsdl
K 25
svn:wc:ra_dav:version-url
V 67
/svn/!svn/ver/39/trunk/phpmsnclassv2/soap/msnab_sharingservice.wsdl
END
msnab_datatypes.xsd
K 25
svn:wc:ra_dav:version-url
V 61
/svn/!svn/ver/39/trunk/phpmsnclassv2/soap/msnab_datatypes.xsd
END

View File

@ -0,0 +1,130 @@
10
dir
46
http://phpmsnclass.googlecode.com/svn/trunk/phpmsnclassv2/soap
http://phpmsnclass.googlecode.com/svn
2009-07-27T06:16:08.380493Z
39
ricky@ez2.us
d71849f3-712d-0410-a681-1795f7bea18a
msnab_servicetypes.xsd
file
2010-06-08T18:29:30.506015Z
096c0222d82879fa2b4bd47fa45f4aaf
2009-07-27T06:16:08.380493Z
39
ricky@ez2.us
27903
msnab_sharingservice.wsdl
file
2010-06-08T18:29:30.506015Z
40f2d65d6cf6245c064defb02bd62705
2009-07-27T06:16:08.380493Z
39
ricky@ez2.us
27625
msnab_datatypes.xsd
file
2010-06-08T18:29:30.506015Z
6a376c90de444594c1c75970586f99f8
2009-07-27T06:16:08.380493Z
39
ricky@ez2.us
42170

View File

@ -0,0 +1,832 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by wp (freezingsoft) -->
<xsd:schema xmlns:msnab="http://www.msn.com/webservices/AddressBook" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.msn.com/webservices/AddressBook" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
<xsd:complexType name="abInfoType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" minOccurs="0"/>
<xsd:element name="ownerPuid" type="xsd:string"/>
<xsd:element name="OwnerCID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="ownerEmail" type="xsd:string"/>
<xsd:element name="fDefault" type="xsd:boolean"/>
<xsd:element name="joinedNamespace" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsBot" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsParentManaged" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="SubscribeExternalPartner" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="NotifyExternalPartner" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="AddressBookType" type="xsd:string" minOccurs="0"/>
<xsd:element name="MessengerApplicationServiceCreated" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsBetaMigrated" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HandleType">
<xsd:sequence>
<xsd:element name="Id" type="xsd:integer"/>
<xsd:element name="Type" type="xsd:string" default="Messenger"/>
<xsd:element name="ForeignId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ServiceType">
<xsd:sequence>
<xsd:element name="Memberships" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Membership" type="msnab:Membership" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Info" type="msnab:InfoType"/>
<xsd:element name="Changes" type="xsd:string"/>
<xsd:element name="LastChange" type="xsd:dateTime" default="0001-01-01T00:00:00"/>
<xsd:element name="Deleted" type="xsd:boolean" default="false"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Membership">
<xsd:sequence>
<xsd:element name="MemberRole" type="xsd:string"/>
<xsd:element name="Members">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Member" type="msnab:BaseMember" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MembershipIsComplete" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BaseMember">
<xsd:sequence>
<xsd:element name="MembershipId" type="xsd:positiveInteger" minOccurs="0"/>
<xsd:element name="Type" type="xsd:string"/>
<xsd:element name="Location" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="msnab:Guid"/>
<xsd:element name="IsPassportNameHidden" type="xsd:boolean"/>
<xsd:element name="CID" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="State" type="msnab:MemberState"/>
<xsd:element name="Annotations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Annotation" type="msnab:Annotation" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Deleted" type="xsd:boolean" default="false" minOccurs="0"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="JoinedDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ExpirationDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Changes" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CircleMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="CircleId" type="msnab:Guid"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PassportMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="PassportName" type="xsd:string"/>
<xsd:element name="IsPassportNameHidden" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="PassportId" type="xsd:int" minOccurs="0"/>
<xsd:element name="CID" type="xsd:long" minOccurs="0"/>
<xsd:element name="PassportChanges" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="EmailMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="Email" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PhoneMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="PhoneNumber" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RoleMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="DefiningService">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="xsd:integer"/>
<xsd:element name="Type" type="xsd:string"/>
<xsd:element name="ForeignId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxRoleRecursionDepth" type="xsd:integer"/>
<xsd:element name="MaxDegreesSeparation" type="xsd:integer"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ServiceMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="Service" type="msnab:HandleType"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="DomainMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="DomainName" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="EveryoneMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="GroupMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="Id" type="msnab:Guid"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:simpleType name="Guid">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="MemberType">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Allow"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:simpleType name="MemberState">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Accepted"/>
<xsd:enumeration value="Pending"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="Annotation">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="Value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContactType">
<xsd:sequence>
<xsd:element name="contactId" type="msnab:Guid" minOccurs="0"/>
<xsd:element name="contactInfo" type="msnab:contactInfoType" minOccurs="0"/>
<xsd:element name="propertiesChanged" type="xsd:string" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
A space (ASCII #32) separated list of properties that
have changed as part of an update request. The property
names don't always match the name of the associated
element.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="fDeleted" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="lastChange" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="CreateDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="LastModifiedBy" type="xsd:integer" minOccurs="0"/>
<xsd:element name="CreatedBy" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContactIdType">
<xsd:sequence>
<xsd:element name="contactId" type="msnab:Guid" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="contactInfoType">
<xsd:sequence>
<xsd:element name="emails" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ContactEmail" type="msnab:contactEmailType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="phones" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ContactPhone" type="msnab:contactPhoneType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="locations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ContactLocation" type="msnab:contactLocationType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="webSites" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ContactWebSite" type="msnab:contactWebSiteType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="annotations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Annotation" type="msnab:Annotation" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupIds" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupIdsDeleted" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="contactType" type="xsd:string" minOccurs="0"/>
<xsd:element name="quickName" type="xsd:string" minOccurs="0"/>
<xsd:element name="firstName" type="xsd:string" minOccurs="0"/>
<xsd:element name="MiddleName" type="xsd:string" minOccurs="0"/>
<xsd:element name="lastName" type="xsd:string" minOccurs="0"/>
<xsd:element name="Suffix" type="xsd:string" minOccurs="0"/>
<xsd:element name="NameTitle" type="xsd:string" minOccurs="0"/>
<xsd:element name="passportName" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsPassportNameHidden" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="displayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="puid" type="xsd:long" minOccurs="0"/>
<xsd:element name="CID" type="xsd:long" minOccurs="0"/>
<xsd:element name="BrandIdList" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsNotMobileVisible" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isMobileIMEnabled" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isMessengerUser" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isFavorite" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isSmtp" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="hasSpace" type="xsd:boolean" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
Indicates whether the contact has a Windows Live
Space or not.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="spotWatchState" type="xsd:string" minOccurs="0"/>
<xsd:element name="birthdate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="primaryEmailType" type="msnab:ContactEmailTypeType" minOccurs="0"/>
<xsd:element name="PrimaryLocation" type="msnab:ContactLocationTypeType" minOccurs="0"/>
<xsd:element name="PrimaryPhone" type="msnab:ContactPhoneTypeType" minOccurs="0"/>
<xsd:element name="IsPrivate" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="Anniversary" type="xsd:string" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
Seen is YYYY/MM/DD format.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Gender" type="xsd:string" minOccurs="0"/>
<xsd:element name="TimeZone" type="xsd:string" minOccurs="0"/>
<xsd:element name="NetworkInfoList" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NetworkInfo" type="msnab:NetworkInfoType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PublicDisplayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsAutoUpdateDisabled" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="MessengerMemberInfo" type="msnab:MessengerMemberInfo" minOccurs="0"/>
<xsd:element name="PropertiesChanged" type="xsd:anyType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="contactEmailType">
<xsd:sequence>
<xsd:element name="contactEmailType" type="msnab:ContactEmailTypeType"/>
<xsd:element name="email" type="xsd:string"/>
<xsd:element name="isMessengerEnabled" type="xsd:boolean"/>
<xsd:element name="Capability" type="xsd:integer"/>
<xsd:element name="MessengerEnabledExternally" type="xsd:boolean"/>
<xsd:element name="propertiesChanged" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ContactEmailTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ContactEmailPersonal"/>
<xsd:enumeration value="ContactEmailBusiness"/>
<xsd:enumeration value="ContactEmailOther"/>
<xsd:enumeration value="ContactEmailMessenger"/>
<xsd:enumeration value="Messenger2"/>
<xsd:enumeration value="Messenger3"/>
<xsd:enumeration value="Messenger4"/>
<xsd:enumeration value="Passport"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="contactPhoneType">
<xsd:sequence>
<xsd:element name="contactPhoneType" type="msnab:ContactPhoneTypeType"/>
<xsd:element name="number" type="xsd:string"/>
<xsd:element name="isMessengerEnabled" type="xsd:boolean"/>
<xsd:element name="propertiesChanged" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ContactPhoneTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ContactPhonePersonal"/>
<xsd:enumeration value="ContactPhoneBusiness"/>
<xsd:enumeration value="ContactPhoneMobile"/>
<xsd:enumeration value="ContactPhonePager"/>
<xsd:enumeration value="ContactPhoneOther"/>
<xsd:enumeration value="ContactPhoneFax"/>
<xsd:enumeration value="Personal2"/>
<xsd:enumeration value="Business2"/>
<xsd:enumeration value="BusinessFax"/>
<xsd:enumeration value="BusinessMobile"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="contactLocationType">
<xsd:sequence>
<xsd:element name="contactLocationType" type="msnab:ContactLocationTypeType"/>
<xsd:element name="name" type="xsd:string" minOccurs="0"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
<xsd:element name="postalCode" type="xsd:string"/>
<xsd:element name="Department" type="xsd:string" minOccurs="0"/>
<xsd:element name="Changes" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ContactLocationTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ContactLocationPersonal"/>
<xsd:enumeration value="ContactLocationBusiness"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="contactWebSiteType">
<xsd:sequence>
<xsd:element name="contactWebSiteType" type="msnab:ContactWebSiteTypeType"/>
<xsd:element name="webURL" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ContactWebSiteTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ContactWebSitePersonal"/>
<xsd:enumeration value="ContactWebSiteBusiness"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="GroupType">
<xsd:sequence>
<xsd:element name="groupId" type="msnab:Guid"/>
<xsd:element name="groupInfo" type="msnab:groupInfoType"/>
<xsd:element name="propertiesChanged" type="xsd:string">
<xsd:annotation>
<xsd:documentation>
A space (ASCII #32) separated list of properties that
have changed as part of an update request. The property
names don't always match the name of the associated
element.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="fDeleted" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="lastChange" type="xsd:dateTime" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="groupInfoType">
<xsd:sequence>
<xsd:element name="annotations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Annotation" type="msnab:Annotation" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupType" type="msnab:Guid" default="C8529CE2-6EAD-434d-881F-341E17DB3FF8" minOccurs="0"/>
<xsd:element name="name" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsNotMobileVisible" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsPrivate" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsFavorite" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="fMessenger" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="groupFilterType">
<xsd:sequence>
<xsd:element name="groupIds">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="InvalidPassportUser">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="errorcode" type="xsd:string"/>
<xsd:element name="errorstring" type="xsd:string"/>
<xsd:element name="additionalDetails">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="originalExceptionErrorMessage" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="MessengerMemberInfo">
<xsd:sequence>
<xsd:element name="PendingAnnotations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Annotation" type="msnab:Annotation" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="InfoType">
<xsd:sequence>
<xsd:element name="Handle" type="msnab:HandleType"/>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="InverseRequired" type="xsd:boolean" default="false"/>
<xsd:element name="AuthorizationCriteria" type="xsd:string" minOccurs="0"/>
<xsd:element name="RSSUrl" type="xsd:anyURI" minOccurs="0"/>
<xsd:element name="IsBot" type="xsd:boolean" default="false"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NotificationDataType">
<xsd:sequence>
<xsd:element name="StoreService" type="msnab:ServiceType"/>
<xsd:element name="Status" type="xsd:string"/>
<xsd:element name="LastChanged" type="xsd:dateTime"/>
<xsd:element name="Gleam" type="xsd:boolean" default="false"/>
<xsd:element name="InstanceId" type="xsd:string" default="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BaseDynamicItemType">
<xsd:sequence>
<xsd:element name="Type" type="xsd:string"/>
<xsd:element name="Deleted" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Notifications" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NotificationData" type="msnab:NotificationDataType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Changes" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CircleDynamicItem" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseDynamicItemType">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PassportDynamicItem" block="" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseDynamicItemType">
<xsd:sequence>
<xsd:element name="CID" type="xsd:string" minOccurs="0"/>
<xsd:element name="PassportName" type="xsd:string"/>
<xsd:element name="PassportId" type="xsd:string" minOccurs="0"/>
<xsd:element name="SpaceStatus" type="xsd:string"/>
<xsd:element name="SpaceLastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="SpaceLastViewed" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="SpaceGleam" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="ProfileLastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ProfileLastView" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ProfileStatus" type="xsd:string"/>
<xsd:element name="ProfileGleam" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="ContactProfileStatus" type="xsd:string"/>
<xsd:element name="ContactProfileLastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ContactProfileLastViewed" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="LiveContactLastChanged" type="xsd:dateTime" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="abType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid"/>
<xsd:element name="abInfo" type="msnab:abInfoType"/>
<xsd:element name="lastChange" type="xsd:dateTime"/>
<xsd:element name="DynamicItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="RecentActivityItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="createDate" type="xsd:dateTime"/>
<xsd:element name="propertiesChanged" type="xsd:anyType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CircleResultType">
<xsd:sequence>
<xsd:element name="Circles" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CircleInverseInfo" type="msnab:CircleInverseInfoType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CircleTicket" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NetworkInfoType">
<xsd:sequence>
<xsd:element name="DomainId" type="xsd:int" minOccurs="0"/>
<xsd:element name="DomainTag" type="xsd:string" minOccurs="0"/>
<xsd:element name="UserTileURL" type="xsd:string" minOccurs="0"/>
<xsd:element name="ProfileURL" type="xsd:string" minOccurs="0"/>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="RelationshipType" type="xsd:int" minOccurs="0"/>
<xsd:element name="RelationshipState" type="xsd:int" minOccurs="0"/>
<xsd:element name="RelationshipStateDate" type="xsd:string" minOccurs="0"/>
<xsd:element name="RelationshipRole" type="xsd:int" minOccurs="0"/>
<xsd:element name="NDRCount" type="xsd:int" minOccurs="0"/>
<xsd:element name="InviterCID" type="xsd:long" minOccurs="0"/>
<xsd:element name="CreateDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="PropertiesChanged" type="xsd:anyType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContactFilterType">
<xsd:sequence>
<xsd:element name="IncludeHiddenContacts" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="filterOptionsType">
<xsd:sequence>
<xsd:element name="DeltasOnly" type="xsd:boolean"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ContactFilter" type="msnab:ContactFilterType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="entityHandle">
<xsd:sequence>
<xsd:element name="Cid" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NotationType">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="Value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ListTemplateVariableItemType">
<xsd:sequence>
<xsd:element name="Values">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Value" type="msnab:SimpleTemplateVariableBaseType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SimpleTemplateVariableBaseType">
<xsd:complexContent>
<xsd:extension base="msnab:TemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Value" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PublisherIdTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:TemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="NameHint" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TargetIdTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:PublisherIdTemplateVariable">
<xsd:sequence>
<xsd:element name="IdOwner" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TextTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:SimpleTemplateVariableBaseType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="HlinkTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:SimpleTemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Text" type="xsd:string"/>
<xsd:element name="Notations">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Notation" type="msnab:NotationType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ListTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:TemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Items">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ListTemplateVariableItem" type="msnab:ListTemplateVariableItemType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ImageTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:SimpleTemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Href" type="xsd:anyURI"/>
<xsd:element name="Notations">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Notation" type="msnab:NotationType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ActivityDetailsType">
<xsd:sequence>
<xsd:element name="OwnerCID" type="xsd:string"/>
<xsd:element name="ObjectId" type="xsd:string"/>
<xsd:element name="ApplicationId" type="xsd:string"/>
<xsd:element name="ChangeType" type="xsd:string"/>
<xsd:element name="PublishDate" type="xsd:dateTime"/>
<xsd:element name="TemplateVariables">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TemplateVariable" type="msnab:TemplateVariableBaseType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RecentActivityTemplateType">
<xsd:sequence>
<xsd:element name="Cardinality" type="xsd:string"/>
<xsd:element name="Data" type="xsd:string"/>
<xsd:element name="Title" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RequestedLocalesType">
<xsd:sequence>
<xsd:element name="string" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RecentActivityTemplateContainerType">
<xsd:sequence>
<xsd:element name="ApplicationId" type="xsd:string"/>
<xsd:element name="ApplicationName" type="xsd:string"/>
<xsd:element name="ChangeType" type="xsd:integer"/>
<xsd:element name="Locale" type="xsd:string"/>
<xsd:element name="RequestedLocales" type="msnab:RequestedLocalesType"/>
<xsd:element name="TemplateRevision" type="xsd:integer"/>
<xsd:element name="Templates">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RecentActivityTemplate" type="msnab:RecentActivityTemplateType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CollapseCondition" type="msnab:CollapseConditionType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CollapseConditionType">
<xsd:sequence>
<xsd:element name="string" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CirclePersonalMembershipType">
<xsd:sequence>
<xsd:element name="Role" type="xsd:string"/>
<xsd:element name="State" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="abHandleType">
<xsd:sequence>
<xsd:element name="ABId" type="xsd:string"/>
<xsd:element name="Puid" type="xsd:long"/>
<xsd:element name="Cid" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="contactHandleType">
<xsd:sequence>
<xsd:element name="Email" type="xsd:string"/>
<xsd:element name="Puid" type="xsd:long"/>
<xsd:element name="Cid" type="xsd:long"/>
<xsd:element name="CircleId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="MembershipInfoType">
<xsd:sequence>
<xsd:element name="CirclePersonalMembership" type="msnab:CirclePersonalMembershipType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PersonalInfoType">
<xsd:sequence>
<xsd:element name="MembershipInfo" type="msnab:MembershipInfoType"/>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="IsNotMobileVisible" type="xsd:boolean"/>
<xsd:element name="IsFavorite" type="xsd:boolean"/>
<xsd:element name="IsFamily" type="xsd:boolean"/>
<xsd:element name="Changes" type="xsd:anyType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContentInfoType">
<xsd:sequence>
<xsd:element name="Domain" type="xsd:int"/>
<xsd:element name="HostedDomain" type="xsd:string"/>
<xsd:element name="Type" type="xsd:int"/>
<xsd:element name="MembershipAccess" type="xsd:int"/>
<xsd:element name="IsPresenceEnabled" type="xsd:boolean"/>
<xsd:element name="RequestMembershipOption" type="xsd:int"/>
<xsd:element name="DisplayName" type="xsd:string"/>
<xsd:element name="ProfileLastUpdated" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Changes" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="CreateDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContentHandleType">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContentType">
<xsd:sequence>
<xsd:element name="Handle" type="msnab:ContentHandleType"/>
<xsd:element name="Info" type="msnab:ContentInfoType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CircleInverseInfoType">
<xsd:sequence>
<xsd:element name="Content" type="msnab:ContentType"/>
<xsd:element name="PersonalInfo" type="msnab:PersonalInfoType"/>
<xsd:element name="Deleted" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="callerInfoType">
<xsd:sequence>
<xsd:element name="PublicDisplayName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

View File

@ -0,0 +1,567 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by wp (freezingsoft) -->
<xsd:schema xmlns:msnab="http://www.msn.com/webservices/AddressBook" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.msn.com/webservices/AddressBook" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
<xsd:include schemaLocation="msnab_datatypes.xsd"/>
<xsd:element name="ABApplicationHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ApplicationId" type="msnab:Guid" fixed="09607671-1C32-421F-A6A6-CBFAA51AB5F4"/>
<xsd:element name="IsMigration" type="xsd:boolean" default="false"/>
<xsd:element name="PartnerScenario" type="xsd:string" default="Initial"/>
<xsd:element name="CacheKey" type="xsd:token" minOccurs="0"/>
<xsd:element name="BrandId" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABAuthHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ManagedGroupRequest" type="xsd:boolean" default="false"/>
<xsd:element name="TicketToken" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ServiceHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Version" type="xsd:token"/>
<xsd:element name="CacheKey" type="xsd:token" minOccurs="0"/>
<xsd:element name="CacheKeyChanged" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="PreferredHostName" type="xsd:string" minOccurs="0"/>
<xsd:element name="SessionId" type="msnab:Guid" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FindMembership" type="msnab:FindMembershipRequestType"/>
<xsd:complexType name="FindMembershipRequestType">
<xsd:sequence>
<xsd:element name="serviceFilter">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Types">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ServiceType" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="View" type="xsd:string" minOccurs="0"/>
<xsd:element name="deltasOnly" type="xsd:boolean" default="false" minOccurs="0"/>
<xsd:element name="lastChange" type="xsd:dateTime" default="0001-01-01T00:00:00.0000000-08:00" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FindMembershipResultType">
<xsd:sequence>
<xsd:element name="Services">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Service" type="msnab:ServiceType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="OwnerNamespace">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Info">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Handle">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="IsPassportNameHidden" type="xsd:boolean"/>
<xsd:element name="CID" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreatorPuid" type="xsd:integer"/>
<xsd:element name="CreatorCID" type="xsd:integer"/>
<xsd:element name="CreatorPassportName" type="xsd:string"/>
<xsd:element name="CircleAttributes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="IsPresenceEnabled" type="xsd:boolean"/>
<xsd:element name="IsEvent" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="Domain" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MessengerApplicationServiceCreated" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Changes" type="xsd:string"/>
<xsd:element name="CreateDate" type="xsd:dateTime"/>
<xsd:element name="LastChange" type="xsd:dateTime"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="FindMembershipResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FindMembershipResult" type="msnab:FindMembershipResultType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABFindAll" type="msnab:ABFindAllRequestType"/>
<xsd:complexType name="ABFindAllRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="abView" type="xsd:string" minOccurs="0"/>
<xsd:element name="deltasOnly" type="xsd:boolean" default="false" minOccurs="0"/>
<xsd:element name="lastChange" type="xsd:dateTime" default="0001-01-01T00:00:00.0000000-08:00" minOccurs="0"/>
<xsd:element name="dynamicItemView" type="xsd:string" fixed="Gleam" minOccurs="0"/>
<xsd:element name="dynamicItemLastChange" type="xsd:dateTime" default="0001-01-01T00:00:00.0000000-08:00" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABFindAllResultType">
<xsd:sequence>
<xsd:element name="groups" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Group" type="msnab:GroupType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DynamicItems" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DynamicItem" type="msnab:BaseDynamicItemType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CircleResult">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CircleTicket" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ab">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid"/>
<xsd:element name="abInfo" type="msnab:abInfoType"/>
<xsd:element name="lastChange" type="xsd:dateTime"/>
<xsd:element name="DynamicItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="RecentActivityItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="createDate" type="xsd:dateTime"/>
<xsd:element name="propertiesChanged" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABFindAllResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABFindAllResult" type="msnab:ABFindAllResultType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABContactAdd" type="msnab:ABContactAddRequestType"/>
<xsd:complexType name="ABContactAddRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="options" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="EnableAllowListManagement" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABContactAddResultType">
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABContactAddResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABContactAddResult" type="msnab:ABContactAddResultType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABContactDelete" type="msnab:ABContactDeleteRequestType"/>
<xsd:complexType name="ABContactDeleteRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactIdType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABContactDeleteResponse"/>
<xsd:element name="ABGroupContactAdd" type="msnab:ABGroupContactAddRequestType"/>
<xsd:complexType name="ABGroupContactAddRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="groupFilter" type="msnab:groupFilterType"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupContactAddOptions" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="fGenerateMissingQuickName" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="EnableAllowListManagement" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABGroupContactAddResultType">
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupContactAddResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABGroupContactAddResult" type="msnab:ABGroupContactAddResultType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABGroupAdd" type="msnab:ABGroupAddRequestType"/>
<xsd:complexType name="ABGroupAddRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="groupAddOptions">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="fRenameOnMsgrConflict" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GroupInfo" type="msnab:groupInfoType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABGroupAddResultType">
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupAddResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABGroupAddResult" type="msnab:ABGroupAddResultType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABGroupUpdate" type="msnab:ABGroupUpdateRequestType"/>
<xsd:complexType name="ABGroupUpdateRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="groups">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Group" type="msnab:GroupType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupUpdateResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="ABGroupDelete" type="msnab:ABGroupDeleteRequestType"/>
<xsd:complexType name="ABGroupDeleteRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="groupFilter" type="msnab:groupFilterType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupDeleteResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="ABContactUpdate" type="msnab:ABContactUpdateRequestType"/>
<xsd:complexType name="ABContactUpdateRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABContactUpdateResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="ABGroupContactDelete" type="msnab:ABGroupContactDeleteRequestType"/>
<xsd:complexType name="ABGroupContactDeleteRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupFilter" type="msnab:groupFilterType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupContactDeleteResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="AddMember" type="msnab:AddMemberRequestType"/>
<xsd:complexType name="AddMemberRequestType">
<xsd:sequence>
<xsd:element name="serviceHandle" type="msnab:HandleType"/>
<xsd:element name="memberships">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Membership" type="msnab:Membership" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="AddMemberResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="DeleteMember" type="msnab:DeleteMemberRequestType"/>
<xsd:complexType name="DeleteMemberRequestType">
<xsd:sequence>
<xsd:element name="serviceHandle" type="msnab:HandleType"/>
<xsd:element name="memberships">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Membership" type="msnab:Membership" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="nsHandle" type="msnab:ContentHandleType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="DeleteMemberResponse">
<xsd:complexType/>
</xsd:element>
<xsd:complexType name="ABAddResponseType">
<xsd:sequence>
<xsd:element name="ABAddResult" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABAddResponse" type="msnab:ABAddResponseType"/>
<xsd:element name="ABAdd" type="msnab:ABAddRequestType"/>
<xsd:complexType name="ABAddRequestType">
<xsd:sequence>
<xsd:element name="abInfo" type="msnab:abInfoType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UpdateDynamicItemRequestType">
<xsd:sequence>
<xsd:element name="abId" type="xsd:string"/>
<xsd:element name="dynamicItems">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DynamicItem" type="msnab:BaseDynamicItemType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="UpdateDynamicItem" type="msnab:UpdateDynamicItemRequestType"/>
<xsd:element name="UpdateDynamicItemResponse"/>
<xsd:element name="ABFindContactsPaged" type="msnab:ABFindContactsPagedRequestType"/>
<xsd:complexType name="ABFindContactsPagedRequestType">
<xsd:sequence>
<xsd:element name="filterOptions" type="msnab:filterOptionsType"/>
<xsd:element name="abView" type="xsd:string"/>
<xsd:element name="extendedContent" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABFindContactsPagedResultType">
<xsd:sequence>
<xsd:element name="Groups" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Group" type="msnab:GroupType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CircleResult" type="msnab:CircleResultType"/>
<xsd:element name="Ab">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid"/>
<xsd:element name="abInfo" type="msnab:abInfoType"/>
<xsd:element name="lastChange" type="xsd:dateTime"/>
<xsd:element name="DynamicItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="RecentActivityItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="createDate" type="xsd:dateTime"/>
<xsd:element name="propertiesChanged" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABFindContactsPagedResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABFindContactsPagedResult" type="msnab:ABFindContactsPagedResultType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WNApplicationHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ApplicationId" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WNAuthHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TicketToken" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WNServiceHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Version" type="xsd:token"/>
<xsd:element name="CacheKey" type="xsd:token" minOccurs="0"/>
<xsd:element name="CacheKeyChanged" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="PreferredHostName" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetContactsRecentActivity" type="msnab:GetContactsRecentActivityRequestType"/>
<xsd:complexType name="GetContactsRecentActivityRequestType">
<xsd:sequence>
<xsd:element name="entityHandle" type="msnab:entityHandle"/>
<xsd:element name="locales">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="string" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="count" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="GetContactsRecentActivityResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetContactsRecentActivityResult" type="msnab:GetContactsRecentActivityResultType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="GetContactsRecentActivityResultType">
<xsd:sequence>
<xsd:element name="Activities">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ActivityDetails" type="msnab:ActivityDetailsType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Templates">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RecentActivityTemplateContainer" type="msnab:RecentActivityTemplateContainerType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FeedUrl" type="xsd:anyURI"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ManageWLConnection" type="msnab:ManageWLConnectionRequestType"/>
<xsd:complexType name="ManageWLConnectionRequestType">
<xsd:sequence>
<xsd:element name="abHandle" type="msnab:abHandleType"/>
<xsd:element name="contactId" type="xsd:string"/>
<xsd:element name="connection" type="xsd:boolean"/>
<xsd:element name="presence" type="xsd:boolean"/>
<xsd:element name="action" type="xsd:integer"/>
<xsd:element name="relationshipType" type="xsd:int"/>
<xsd:element name="relationshipRole" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ManageWLConnectionResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ManageWLConnectionResult" type="msnab:ContactType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateContact" type="msnab:CreateContactType"/>
<xsd:complexType name="CreateContactType">
<xsd:sequence>
<xsd:element name="abHandle" type="msnab:abHandleType"/>
<xsd:element name="contactHandle" type="msnab:contactHandleType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="CreateContactResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CreateContactResult" type="msnab:ContactType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateCircle" type="msnab:CreateCircleRequestType"/>
<xsd:complexType name="CreateCircleRequestType">
<xsd:sequence>
<xsd:element name="properties" type="msnab:ContentInfoType"/>
<xsd:element name="callerInfo" type="msnab:callerInfoType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CreateCircleResponseType">
<xsd:sequence>
<xsd:element name="Id" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="CreateCircleResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CreateCircleResult" type="msnab:CreateCircleResponseType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

View File

@ -0,0 +1,532 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by wp (freezingsoft) -->
<definitions xmlns:msnab="http://www.msn.com/webservices/AddressBook" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.msn.com/webservices/AddressBook">
<types>
<ns:schema xmlns="http://www.w3.org/2001/XMLSchema">
<ns:import schemaLocation="msnab_servicetypes.xsd" namespace="http://www.msn.com/webservices/AddressBook"/>
</ns:schema>
</types>
<message name="ABHeader">
<part name="ApplicationHeader" element="msnab:ABApplicationHeader"/>
<part name="AuthHeader" element="msnab:ABAuthHeader"/>
</message>
<message name="FindMembershipMessage">
<part name="FindMembershipRequest" element="msnab:FindMembership"/>
</message>
<message name="ABFindAllMessage">
<part name="ABFindAllRequest" element="msnab:ABFindAll"/>
</message>
<message name="ABContactAddMessage">
<part name="ABContactAddRequest" element="msnab:ABContactAdd"/>
</message>
<message name="ABContactDeleteMessage">
<part name="ABContactDeleteRequest" element="msnab:ABContactDelete"/>
</message>
<message name="ABGroupContactAddMessage">
<part name="ABGroupContactAddRequest" element="msnab:ABGroupContactAdd"/>
</message>
<message name="ABGroupAddMessage">
<part name="ABGroupAddRequest" element="msnab:ABGroupAdd"/>
</message>
<message name="ABGroupUpdateMessage">
<part name="ABGroupUpdateRequest" element="msnab:ABGroupUpdate"/>
</message>
<message name="ABGroupDeleteMessage">
<part name="ABGroupDeleteRequest" element="msnab:ABGroupDelete"/>
</message>
<message name="ABGroupContactDeleteMessage">
<part name="ABGroupContactDeleteRequest" element="msnab:ABGroupContactDelete"/>
</message>
<message name="ABContactUpdateMessage">
<part name="ABContactUpdateRequest" element="msnab:ABContactUpdate"/>
</message>
<message name="AddMemberMessage">
<part name="AddMemberRequest" element="msnab:AddMember"/>
</message>
<message name="DeleteMemberMessage">
<part name="DeleteMemberRequest" element="msnab:DeleteMember"/>
</message>
<message name="ServiceHeader">
<part name="ServiceHeader" element="msnab:ServiceHeader"/>
</message>
<message name="FindMembershipResponseMessage">
<part name="FindMembershipResponse" element="msnab:FindMembershipResponse"/>
</message>
<message name="ABFindAllResponseMessage">
<part name="ABFindAllResponse" element="msnab:ABFindAllResponse"/>
</message>
<message name="ABContactAddResponseMessage">
<part name="ABContactAddResponse" element="msnab:ABContactAddResponse"/>
</message>
<message name="ABContactDeleteResponseMessage">
<part name="ABContactDeleteResponse" element="msnab:ABContactDeleteResponse"/>
</message>
<message name="ABGroupContactAddResponseMessage">
<part name="ABGroupContactAddResponse" element="msnab:ABGroupContactAddResponse"/>
</message>
<message name="ABGroupAddResponseMessage">
<part name="ABGroupAddResponse" element="msnab:ABGroupAddResponse"/>
</message>
<message name="ABGroupUpdateResponseMessage">
<part name="ABGroupUpdateResponse" element="msnab:ABGroupUpdateResponse"/>
</message>
<message name="ABGroupDeleteResponseMessage">
<part name="ABGroupDeleteResponse" element="msnab:ABGroupDeleteResponse"/>
</message>
<message name="ABGroupContactDeleteResponseMessage">
<part name="ABGroupContactDeleteResponse" element="msnab:ABGroupContactDeleteResponse"/>
</message>
<message name="ABContactUpdateResponseMessage">
<part name="ABContactUpdateResponse" element="msnab:ABContactUpdateResponse"/>
</message>
<message name="AddMemberResponseMessage">
<part name="AddMemberResponse" element="msnab:AddMemberResponse"/>
</message>
<message name="DeleteMemberResponseMessage">
<part name="DeleteMemberResponse" element="msnab:DeleteMemberResponse"/>
</message>
<message name="InvalidPassportUserMessage">
<part name="fault" element="msnab:InvalidPassportUser"/>
</message>
<message name="ABAddMessage">
<part name="ABAddRequest" element="msnab:ABAdd"/>
</message>
<message name="ABAddResponseMessage">
<part name="ABAddResponse" element="msnab:ABAddResponse"/>
</message>
<message name="UpdateDynamicItemMessage">
<part name="UpdateDynamicItem" element="msnab:UpdateDynamicItem"/>
</message>
<message name="UpdateDynamicItemResponseMessage">
<part name="UpdateDynamicItemResponse" element="msnab:UpdateDynamicItemResponse"/>
</message>
<message name="ABFindContactsPagedMessage">
<part name="ABFindContactsPagedRequest" element="msnab:ABFindContactsPaged"/>
</message>
<message name="ABFindContactsPagedResponseMessage">
<part name="ABFindContactsPagedResponse" element="msnab:ABFindContactsPagedResponse"/>
</message>
<message name="GetContactsRecentActivityMessage">
<part name="GetContactsRecentActivityRequest" element="msnab:GetContactsRecentActivity"/>
</message>
<message name="GetContactsRecentActivityResponseMessage">
<part name="GetContactsRecentActivityResponse" element="msnab:GetContactsRecentActivityResponse"/>
</message>
<message name="WNHeader">
<part name="WNApplicationHeader" element="msnab:WNApplicationHeader"/>
<part name="WNAuthHeader" element="msnab:WNAuthHeader"/>
<part name="WNServiceHeader" element="msnab:WNServiceHeader"/>
</message>
<message name="CreateCircleMessage">
<part name="CreateCircleRequest" element="msnab:CreateCircle"/>
</message>
<message name="CreateCircleResponseMessage">
<part name="CreateCircleResponse" element="msnab:CreateCircleResponse"/>
</message>
<message name="CreateContactMessage">
<part name="CreateContactRequest" element="msnab:CreateContact"/>
</message>
<message name="CreateContactResponseMessage">
<part name="CreateContactResponse" element="msnab:CreateContactResponse"/>
</message>
<message name="ManageWLConnectionMessage">
<part name="ManageWLConnection" element="msnab:ManageWLConnection"/>
</message>
<message name="ManageWLConnectionResponseMessage">
<part name="ManageWLConnectionResponse" element="msnab:ManageWLConnectionResponse"/>
</message>
<portType name="SharingServicePortType">
<operation name="FindMembership">
<input message="msnab:FindMembershipMessage"/>
<output message="msnab:FindMembershipResponseMessage"/>
</operation>
<operation name="AddMember">
<input message="msnab:AddMemberMessage"/>
<output message="msnab:AddMemberResponseMessage"/>
</operation>
<operation name="DeleteMember">
<input message="msnab:DeleteMemberMessage"/>
<output message="msnab:DeleteMemberResponseMessage"/>
</operation>
<operation name="CreateCircle">
<input message="msnab:CreateCircleMessage"/>
<output message="msnab:CreateCircleResponseMessage"/>
</operation>
</portType>
<portType name="ABServicePortType">
<operation name="ABFindAll">
<input message="msnab:ABFindAllMessage"/>
<output message="msnab:ABFindAllResponseMessage"/>
</operation>
<operation name="ABContactAdd">
<input message="msnab:ABContactAddMessage"/>
<output message="msnab:ABContactAddResponseMessage"/>
<fault name="InvalidPassportUserException" message="msnab:InvalidPassportUserMessage"/>
</operation>
<operation name="ABContactDelete">
<input message="msnab:ABContactDeleteMessage"/>
<output message="msnab:ABContactDeleteResponseMessage"/>
<fault name="InvalidPassportUserException" message="msnab:InvalidPassportUserMessage"/>
</operation>
<operation name="ABGroupContactAdd">
<input message="msnab:ABGroupContactAddMessage"/>
<output message="msnab:ABGroupContactAddResponseMessage"/>
<fault name="InvalidPassportUserException" message="msnab:InvalidPassportUserMessage"/>
</operation>
<operation name="ABGroupAdd">
<input message="msnab:ABGroupAddMessage"/>
<output message="msnab:ABGroupAddResponseMessage"/>
</operation>
<operation name="ABGroupUpdate">
<input message="msnab:ABGroupUpdateMessage"/>
<output message="msnab:ABGroupUpdateResponseMessage"/>
</operation>
<operation name="ABGroupDelete">
<input message="msnab:ABGroupDeleteMessage"/>
<output message="msnab:ABGroupDeleteResponseMessage"/>
</operation>
<operation name="ABGroupContactDelete">
<input message="msnab:ABGroupContactDeleteMessage"/>
<output message="msnab:ABGroupContactDeleteResponseMessage"/>
</operation>
<operation name="ABContactUpdate">
<input message="msnab:ABContactUpdateMessage"/>
<output message="msnab:ABContactUpdateResponseMessage"/>
</operation>
<operation name="ABAdd">
<input message="msnab:ABAddMessage"/>
<output message="msnab:ABAddResponseMessage"/>
</operation>
<operation name="UpdateDynamicItem">
<input message="msnab:UpdateDynamicItemMessage"/>
<output message="msnab:UpdateDynamicItemResponseMessage"/>
</operation>
<operation name="ABFindContactsPaged">
<input message="msnab:ABFindContactsPagedMessage"/>
<output message="msnab:ABFindContactsPagedResponseMessage"/>
</operation>
<operation name="CreateContact">
<input message="msnab:CreateContactMessage"/>
<output message="msnab:CreateContactResponseMessage"/>
</operation>
<operation name="ManageWLConnection">
<input message="msnab:ManageWLConnectionMessage"/>
<output message="msnab:ManageWLConnectionResponseMessage"/>
</operation>
</portType>
<portType name="WhatsUpServicePortType">
<operation name="GetContactsRecentActivity">
<input message="msnab:GetContactsRecentActivityMessage"/>
<output message="msnab:GetContactsRecentActivityResponseMessage"/>
</operation>
</portType>
<binding name="SharingServiceBinding" type="msnab:SharingServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="FindMembership">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/FindMembership"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="AddMember">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/AddMember"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="DeleteMember">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/DeleteMember"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="CreateCircle">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/CreateCircle"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
</binding>
<binding name="ABServiceBinding" type="msnab:ABServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="ABFindAll">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABFindAll"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABContactAdd">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABContactAdd"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
<fault name="InvalidPassportUserException">
<soap:fault name="InvalidPassportUserException" use="literal"/>
</fault>
</operation>
<operation name="ABContactDelete">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABContactDelete"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
<fault name="InvalidPassportUserException">
<soap:fault name="InvalidPassportUserException" use="literal"/>
</fault>
</operation>
<operation name="ABGroupContactAdd">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupContactAdd"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
<fault name="InvalidPassportUserException">
<soap:fault name="InvalidPassportUserException" use="literal"/>
</fault>
</operation>
<operation name="ABGroupAdd">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupAdd"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABGroupUpdate">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupUpdate"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABGroupDelete">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupDelete"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABGroupContactDelete">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupContactDelete"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABContactUpdate">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABContactUpdate"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABAdd">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABAdd"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
<operation name="UpdateDynamicItem">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/UpdateDynamicItem"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
<operation name="ABFindContactsPaged">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABFindContactsPaged"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
<operation name="CreateContact">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/CreateContact"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
<operation name="ManageWLConnection">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ManageWLConnection"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
</binding>
<binding name="WhatsUpServiceBinding" type="msnab:WhatsUpServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetContactsRecentActivity">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/GetContactsRecentActivity"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:WNHeader" part="WNApplicationHeader" use="literal"/>
<soap:header message="msnab:WNHeader" part="WNAuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:WNHeader" part="WNServiceHeader" use="literal"/>
</output>
</operation>
</binding>
<service name="SharingService">
<port name="FindMembershipPort" binding="msnab:SharingServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/SharingService.asmx"/>
</port>
<port name="AddMemberPort" binding="msnab:SharingServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/SharingService.asmx"/>
</port>
<port name="DeleteMemberPort" binding="msnab:SharingServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/SharingService.asmx"/>
</port>
<port name="CreateCirclePort" binding="msnab:SharingServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/SharingService.asmx"/>
</port>
</service>
<service name="ABService">
<port name="ABFindAllPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABContactAddPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABContactDeletePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupContactAddPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupAddPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupUpdatePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupDeletePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupContactDeletePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABContactUpdatePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABAddPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="UpdateDynamicItemPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABFindContactsPagedPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="CreateContactPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ManageWLConnectionPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
</service>
<service name="WhatsUpService">
<port name="GetContactsRecentActivityPort" binding="msnab:WhatsUpServiceBinding">
<soap:address location="http://sup.live.com/whatsnew/whatsnewservice.asmx"/>
</port>
</service>
</definitions>

View File

@ -0,0 +1,832 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by wp (freezingsoft) -->
<xsd:schema xmlns:msnab="http://www.msn.com/webservices/AddressBook" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.msn.com/webservices/AddressBook" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
<xsd:complexType name="abInfoType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" minOccurs="0"/>
<xsd:element name="ownerPuid" type="xsd:string"/>
<xsd:element name="OwnerCID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="ownerEmail" type="xsd:string"/>
<xsd:element name="fDefault" type="xsd:boolean"/>
<xsd:element name="joinedNamespace" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsBot" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsParentManaged" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="SubscribeExternalPartner" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="NotifyExternalPartner" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="AddressBookType" type="xsd:string" minOccurs="0"/>
<xsd:element name="MessengerApplicationServiceCreated" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsBetaMigrated" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HandleType">
<xsd:sequence>
<xsd:element name="Id" type="xsd:integer"/>
<xsd:element name="Type" type="xsd:string" default="Messenger"/>
<xsd:element name="ForeignId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ServiceType">
<xsd:sequence>
<xsd:element name="Memberships" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Membership" type="msnab:Membership" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Info" type="msnab:InfoType"/>
<xsd:element name="Changes" type="xsd:string"/>
<xsd:element name="LastChange" type="xsd:dateTime" default="0001-01-01T00:00:00"/>
<xsd:element name="Deleted" type="xsd:boolean" default="false"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Membership">
<xsd:sequence>
<xsd:element name="MemberRole" type="xsd:string"/>
<xsd:element name="Members">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Member" type="msnab:BaseMember" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MembershipIsComplete" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BaseMember">
<xsd:sequence>
<xsd:element name="MembershipId" type="xsd:positiveInteger" minOccurs="0"/>
<xsd:element name="Type" type="xsd:string"/>
<xsd:element name="Location" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="msnab:Guid"/>
<xsd:element name="IsPassportNameHidden" type="xsd:boolean"/>
<xsd:element name="CID" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="State" type="msnab:MemberState"/>
<xsd:element name="Annotations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Annotation" type="msnab:Annotation" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Deleted" type="xsd:boolean" default="false" minOccurs="0"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="JoinedDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ExpirationDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Changes" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CircleMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="CircleId" type="msnab:Guid"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PassportMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="PassportName" type="xsd:string"/>
<xsd:element name="IsPassportNameHidden" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="PassportId" type="xsd:int" minOccurs="0"/>
<xsd:element name="CID" type="xsd:long" minOccurs="0"/>
<xsd:element name="PassportChanges" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="EmailMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="Email" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PhoneMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="PhoneNumber" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RoleMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="DefiningService">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="xsd:integer"/>
<xsd:element name="Type" type="xsd:string"/>
<xsd:element name="ForeignId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxRoleRecursionDepth" type="xsd:integer"/>
<xsd:element name="MaxDegreesSeparation" type="xsd:integer"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ServiceMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="Service" type="msnab:HandleType"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="DomainMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="DomainName" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="EveryoneMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="GroupMember" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseMember">
<xsd:sequence>
<xsd:element name="Id" type="msnab:Guid"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:simpleType name="Guid">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="MemberType">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Allow"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:simpleType name="MemberState">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Accepted"/>
<xsd:enumeration value="Pending"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="Annotation">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="Value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContactType">
<xsd:sequence>
<xsd:element name="contactId" type="msnab:Guid" minOccurs="0"/>
<xsd:element name="contactInfo" type="msnab:contactInfoType" minOccurs="0"/>
<xsd:element name="propertiesChanged" type="xsd:string" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
A space (ASCII #32) separated list of properties that
have changed as part of an update request. The property
names don't always match the name of the associated
element.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="fDeleted" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="lastChange" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="CreateDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="LastModifiedBy" type="xsd:integer" minOccurs="0"/>
<xsd:element name="CreatedBy" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContactIdType">
<xsd:sequence>
<xsd:element name="contactId" type="msnab:Guid" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="contactInfoType">
<xsd:sequence>
<xsd:element name="emails" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ContactEmail" type="msnab:contactEmailType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="phones" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ContactPhone" type="msnab:contactPhoneType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="locations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ContactLocation" type="msnab:contactLocationType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="webSites" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ContactWebSite" type="msnab:contactWebSiteType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="annotations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Annotation" type="msnab:Annotation" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupIds" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupIdsDeleted" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="contactType" type="xsd:string" minOccurs="0"/>
<xsd:element name="quickName" type="xsd:string" minOccurs="0"/>
<xsd:element name="firstName" type="xsd:string" minOccurs="0"/>
<xsd:element name="MiddleName" type="xsd:string" minOccurs="0"/>
<xsd:element name="lastName" type="xsd:string" minOccurs="0"/>
<xsd:element name="Suffix" type="xsd:string" minOccurs="0"/>
<xsd:element name="NameTitle" type="xsd:string" minOccurs="0"/>
<xsd:element name="passportName" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsPassportNameHidden" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="displayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="puid" type="xsd:long" minOccurs="0"/>
<xsd:element name="CID" type="xsd:long" minOccurs="0"/>
<xsd:element name="BrandIdList" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsNotMobileVisible" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isMobileIMEnabled" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isMessengerUser" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isFavorite" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isSmtp" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="hasSpace" type="xsd:boolean" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
Indicates whether the contact has a Windows Live
Space or not.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="spotWatchState" type="xsd:string" minOccurs="0"/>
<xsd:element name="birthdate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="primaryEmailType" type="msnab:ContactEmailTypeType" minOccurs="0"/>
<xsd:element name="PrimaryLocation" type="msnab:ContactLocationTypeType" minOccurs="0"/>
<xsd:element name="PrimaryPhone" type="msnab:ContactPhoneTypeType" minOccurs="0"/>
<xsd:element name="IsPrivate" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="Anniversary" type="xsd:string" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
Seen is YYYY/MM/DD format.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Gender" type="xsd:string" minOccurs="0"/>
<xsd:element name="TimeZone" type="xsd:string" minOccurs="0"/>
<xsd:element name="NetworkInfoList" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NetworkInfo" type="msnab:NetworkInfoType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PublicDisplayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsAutoUpdateDisabled" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="MessengerMemberInfo" type="msnab:MessengerMemberInfo" minOccurs="0"/>
<xsd:element name="PropertiesChanged" type="xsd:anyType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="contactEmailType">
<xsd:sequence>
<xsd:element name="contactEmailType" type="msnab:ContactEmailTypeType"/>
<xsd:element name="email" type="xsd:string"/>
<xsd:element name="isMessengerEnabled" type="xsd:boolean"/>
<xsd:element name="Capability" type="xsd:integer"/>
<xsd:element name="MessengerEnabledExternally" type="xsd:boolean"/>
<xsd:element name="propertiesChanged" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ContactEmailTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ContactEmailPersonal"/>
<xsd:enumeration value="ContactEmailBusiness"/>
<xsd:enumeration value="ContactEmailOther"/>
<xsd:enumeration value="ContactEmailMessenger"/>
<xsd:enumeration value="Messenger2"/>
<xsd:enumeration value="Messenger3"/>
<xsd:enumeration value="Messenger4"/>
<xsd:enumeration value="Passport"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="contactPhoneType">
<xsd:sequence>
<xsd:element name="contactPhoneType" type="msnab:ContactPhoneTypeType"/>
<xsd:element name="number" type="xsd:string"/>
<xsd:element name="isMessengerEnabled" type="xsd:boolean"/>
<xsd:element name="propertiesChanged" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ContactPhoneTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ContactPhonePersonal"/>
<xsd:enumeration value="ContactPhoneBusiness"/>
<xsd:enumeration value="ContactPhoneMobile"/>
<xsd:enumeration value="ContactPhonePager"/>
<xsd:enumeration value="ContactPhoneOther"/>
<xsd:enumeration value="ContactPhoneFax"/>
<xsd:enumeration value="Personal2"/>
<xsd:enumeration value="Business2"/>
<xsd:enumeration value="BusinessFax"/>
<xsd:enumeration value="BusinessMobile"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="contactLocationType">
<xsd:sequence>
<xsd:element name="contactLocationType" type="msnab:ContactLocationTypeType"/>
<xsd:element name="name" type="xsd:string" minOccurs="0"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
<xsd:element name="postalCode" type="xsd:string"/>
<xsd:element name="Department" type="xsd:string" minOccurs="0"/>
<xsd:element name="Changes" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ContactLocationTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ContactLocationPersonal"/>
<xsd:enumeration value="ContactLocationBusiness"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="contactWebSiteType">
<xsd:sequence>
<xsd:element name="contactWebSiteType" type="msnab:ContactWebSiteTypeType"/>
<xsd:element name="webURL" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ContactWebSiteTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ContactWebSitePersonal"/>
<xsd:enumeration value="ContactWebSiteBusiness"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="GroupType">
<xsd:sequence>
<xsd:element name="groupId" type="msnab:Guid"/>
<xsd:element name="groupInfo" type="msnab:groupInfoType"/>
<xsd:element name="propertiesChanged" type="xsd:string">
<xsd:annotation>
<xsd:documentation>
A space (ASCII #32) separated list of properties that
have changed as part of an update request. The property
names don't always match the name of the associated
element.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="fDeleted" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="lastChange" type="xsd:dateTime" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="groupInfoType">
<xsd:sequence>
<xsd:element name="annotations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Annotation" type="msnab:Annotation" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupType" type="msnab:Guid" default="C8529CE2-6EAD-434d-881F-341E17DB3FF8" minOccurs="0"/>
<xsd:element name="name" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsNotMobileVisible" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsPrivate" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="IsFavorite" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="fMessenger" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="groupFilterType">
<xsd:sequence>
<xsd:element name="groupIds">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="InvalidPassportUser">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="errorcode" type="xsd:string"/>
<xsd:element name="errorstring" type="xsd:string"/>
<xsd:element name="additionalDetails">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="originalExceptionErrorMessage" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="MessengerMemberInfo">
<xsd:sequence>
<xsd:element name="PendingAnnotations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Annotation" type="msnab:Annotation" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="InfoType">
<xsd:sequence>
<xsd:element name="Handle" type="msnab:HandleType"/>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="InverseRequired" type="xsd:boolean" default="false"/>
<xsd:element name="AuthorizationCriteria" type="xsd:string" minOccurs="0"/>
<xsd:element name="RSSUrl" type="xsd:anyURI" minOccurs="0"/>
<xsd:element name="IsBot" type="xsd:boolean" default="false"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NotificationDataType">
<xsd:sequence>
<xsd:element name="StoreService" type="msnab:ServiceType"/>
<xsd:element name="Status" type="xsd:string"/>
<xsd:element name="LastChanged" type="xsd:dateTime"/>
<xsd:element name="Gleam" type="xsd:boolean" default="false"/>
<xsd:element name="InstanceId" type="xsd:string" default="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BaseDynamicItemType">
<xsd:sequence>
<xsd:element name="Type" type="xsd:string"/>
<xsd:element name="Deleted" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Notifications" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NotificationData" type="msnab:NotificationDataType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Changes" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CircleDynamicItem" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseDynamicItemType">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PassportDynamicItem" block="" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="msnab:BaseDynamicItemType">
<xsd:sequence>
<xsd:element name="CID" type="xsd:string" minOccurs="0"/>
<xsd:element name="PassportName" type="xsd:string"/>
<xsd:element name="PassportId" type="xsd:string" minOccurs="0"/>
<xsd:element name="SpaceStatus" type="xsd:string"/>
<xsd:element name="SpaceLastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="SpaceLastViewed" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="SpaceGleam" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="ProfileLastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ProfileLastView" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ProfileStatus" type="xsd:string"/>
<xsd:element name="ProfileGleam" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="ContactProfileStatus" type="xsd:string"/>
<xsd:element name="ContactProfileLastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ContactProfileLastViewed" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="LiveContactLastChanged" type="xsd:dateTime" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="abType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid"/>
<xsd:element name="abInfo" type="msnab:abInfoType"/>
<xsd:element name="lastChange" type="xsd:dateTime"/>
<xsd:element name="DynamicItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="RecentActivityItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="createDate" type="xsd:dateTime"/>
<xsd:element name="propertiesChanged" type="xsd:anyType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CircleResultType">
<xsd:sequence>
<xsd:element name="Circles" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CircleInverseInfo" type="msnab:CircleInverseInfoType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CircleTicket" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NetworkInfoType">
<xsd:sequence>
<xsd:element name="DomainId" type="xsd:int" minOccurs="0"/>
<xsd:element name="DomainTag" type="xsd:string" minOccurs="0"/>
<xsd:element name="UserTileURL" type="xsd:string" minOccurs="0"/>
<xsd:element name="ProfileURL" type="xsd:string" minOccurs="0"/>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
<xsd:element name="RelationshipType" type="xsd:int" minOccurs="0"/>
<xsd:element name="RelationshipState" type="xsd:int" minOccurs="0"/>
<xsd:element name="RelationshipStateDate" type="xsd:string" minOccurs="0"/>
<xsd:element name="RelationshipRole" type="xsd:int" minOccurs="0"/>
<xsd:element name="NDRCount" type="xsd:int" minOccurs="0"/>
<xsd:element name="InviterCID" type="xsd:long" minOccurs="0"/>
<xsd:element name="CreateDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="PropertiesChanged" type="xsd:anyType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContactFilterType">
<xsd:sequence>
<xsd:element name="IncludeHiddenContacts" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="filterOptionsType">
<xsd:sequence>
<xsd:element name="DeltasOnly" type="xsd:boolean"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="ContactFilter" type="msnab:ContactFilterType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="entityHandle">
<xsd:sequence>
<xsd:element name="Cid" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NotationType">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="Value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ListTemplateVariableItemType">
<xsd:sequence>
<xsd:element name="Values">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Value" type="msnab:SimpleTemplateVariableBaseType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SimpleTemplateVariableBaseType">
<xsd:complexContent>
<xsd:extension base="msnab:TemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Value" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PublisherIdTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:TemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="NameHint" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TargetIdTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:PublisherIdTemplateVariable">
<xsd:sequence>
<xsd:element name="IdOwner" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TextTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:SimpleTemplateVariableBaseType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="HlinkTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:SimpleTemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Text" type="xsd:string"/>
<xsd:element name="Notations">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Notation" type="msnab:NotationType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ListTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:TemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Items">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ListTemplateVariableItem" type="msnab:ListTemplateVariableItemType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ImageTemplateVariable">
<xsd:complexContent>
<xsd:extension base="msnab:SimpleTemplateVariableBaseType">
<xsd:sequence>
<xsd:element name="Href" type="xsd:anyURI"/>
<xsd:element name="Notations">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Notation" type="msnab:NotationType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ActivityDetailsType">
<xsd:sequence>
<xsd:element name="OwnerCID" type="xsd:string"/>
<xsd:element name="ObjectId" type="xsd:string"/>
<xsd:element name="ApplicationId" type="xsd:string"/>
<xsd:element name="ChangeType" type="xsd:string"/>
<xsd:element name="PublishDate" type="xsd:dateTime"/>
<xsd:element name="TemplateVariables">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TemplateVariable" type="msnab:TemplateVariableBaseType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RecentActivityTemplateType">
<xsd:sequence>
<xsd:element name="Cardinality" type="xsd:string"/>
<xsd:element name="Data" type="xsd:string"/>
<xsd:element name="Title" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RequestedLocalesType">
<xsd:sequence>
<xsd:element name="string" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RecentActivityTemplateContainerType">
<xsd:sequence>
<xsd:element name="ApplicationId" type="xsd:string"/>
<xsd:element name="ApplicationName" type="xsd:string"/>
<xsd:element name="ChangeType" type="xsd:integer"/>
<xsd:element name="Locale" type="xsd:string"/>
<xsd:element name="RequestedLocales" type="msnab:RequestedLocalesType"/>
<xsd:element name="TemplateRevision" type="xsd:integer"/>
<xsd:element name="Templates">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RecentActivityTemplate" type="msnab:RecentActivityTemplateType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CollapseCondition" type="msnab:CollapseConditionType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CollapseConditionType">
<xsd:sequence>
<xsd:element name="string" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CirclePersonalMembershipType">
<xsd:sequence>
<xsd:element name="Role" type="xsd:string"/>
<xsd:element name="State" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="abHandleType">
<xsd:sequence>
<xsd:element name="ABId" type="xsd:string"/>
<xsd:element name="Puid" type="xsd:long"/>
<xsd:element name="Cid" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="contactHandleType">
<xsd:sequence>
<xsd:element name="Email" type="xsd:string"/>
<xsd:element name="Puid" type="xsd:long"/>
<xsd:element name="Cid" type="xsd:long"/>
<xsd:element name="CircleId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="MembershipInfoType">
<xsd:sequence>
<xsd:element name="CirclePersonalMembership" type="msnab:CirclePersonalMembershipType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PersonalInfoType">
<xsd:sequence>
<xsd:element name="MembershipInfo" type="msnab:MembershipInfoType"/>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="IsNotMobileVisible" type="xsd:boolean"/>
<xsd:element name="IsFavorite" type="xsd:boolean"/>
<xsd:element name="IsFamily" type="xsd:boolean"/>
<xsd:element name="Changes" type="xsd:anyType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContentInfoType">
<xsd:sequence>
<xsd:element name="Domain" type="xsd:int"/>
<xsd:element name="HostedDomain" type="xsd:string"/>
<xsd:element name="Type" type="xsd:int"/>
<xsd:element name="MembershipAccess" type="xsd:int"/>
<xsd:element name="IsPresenceEnabled" type="xsd:boolean"/>
<xsd:element name="RequestMembershipOption" type="xsd:int"/>
<xsd:element name="DisplayName" type="xsd:string"/>
<xsd:element name="ProfileLastUpdated" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Changes" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="CreateDate" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="LastChanged" type="xsd:dateTime" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContentHandleType">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContentType">
<xsd:sequence>
<xsd:element name="Handle" type="msnab:ContentHandleType"/>
<xsd:element name="Info" type="msnab:ContentInfoType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CircleInverseInfoType">
<xsd:sequence>
<xsd:element name="Content" type="msnab:ContentType"/>
<xsd:element name="PersonalInfo" type="msnab:PersonalInfoType"/>
<xsd:element name="Deleted" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="callerInfoType">
<xsd:sequence>
<xsd:element name="PublicDisplayName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

View File

@ -0,0 +1,567 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by wp (freezingsoft) -->
<xsd:schema xmlns:msnab="http://www.msn.com/webservices/AddressBook" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.msn.com/webservices/AddressBook" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
<xsd:include schemaLocation="msnab_datatypes.xsd"/>
<xsd:element name="ABApplicationHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ApplicationId" type="msnab:Guid" fixed="09607671-1C32-421F-A6A6-CBFAA51AB5F4"/>
<xsd:element name="IsMigration" type="xsd:boolean" default="false"/>
<xsd:element name="PartnerScenario" type="xsd:string" default="Initial"/>
<xsd:element name="CacheKey" type="xsd:token" minOccurs="0"/>
<xsd:element name="BrandId" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABAuthHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ManagedGroupRequest" type="xsd:boolean" default="false"/>
<xsd:element name="TicketToken" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ServiceHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Version" type="xsd:token"/>
<xsd:element name="CacheKey" type="xsd:token" minOccurs="0"/>
<xsd:element name="CacheKeyChanged" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="PreferredHostName" type="xsd:string" minOccurs="0"/>
<xsd:element name="SessionId" type="msnab:Guid" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FindMembership" type="msnab:FindMembershipRequestType"/>
<xsd:complexType name="FindMembershipRequestType">
<xsd:sequence>
<xsd:element name="serviceFilter">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Types">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ServiceType" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="View" type="xsd:string" minOccurs="0"/>
<xsd:element name="deltasOnly" type="xsd:boolean" default="false" minOccurs="0"/>
<xsd:element name="lastChange" type="xsd:dateTime" default="0001-01-01T00:00:00.0000000-08:00" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FindMembershipResultType">
<xsd:sequence>
<xsd:element name="Services">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Service" type="msnab:ServiceType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="OwnerNamespace">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Info">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Handle">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="IsPassportNameHidden" type="xsd:boolean"/>
<xsd:element name="CID" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreatorPuid" type="xsd:integer"/>
<xsd:element name="CreatorCID" type="xsd:integer"/>
<xsd:element name="CreatorPassportName" type="xsd:string"/>
<xsd:element name="CircleAttributes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="IsPresenceEnabled" type="xsd:boolean"/>
<xsd:element name="IsEvent" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="Domain" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MessengerApplicationServiceCreated" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Changes" type="xsd:string"/>
<xsd:element name="CreateDate" type="xsd:dateTime"/>
<xsd:element name="LastChange" type="xsd:dateTime"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="FindMembershipResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FindMembershipResult" type="msnab:FindMembershipResultType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABFindAll" type="msnab:ABFindAllRequestType"/>
<xsd:complexType name="ABFindAllRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="abView" type="xsd:string" minOccurs="0"/>
<xsd:element name="deltasOnly" type="xsd:boolean" default="false" minOccurs="0"/>
<xsd:element name="lastChange" type="xsd:dateTime" default="0001-01-01T00:00:00.0000000-08:00" minOccurs="0"/>
<xsd:element name="dynamicItemView" type="xsd:string" fixed="Gleam" minOccurs="0"/>
<xsd:element name="dynamicItemLastChange" type="xsd:dateTime" default="0001-01-01T00:00:00.0000000-08:00" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABFindAllResultType">
<xsd:sequence>
<xsd:element name="groups" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Group" type="msnab:GroupType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DynamicItems" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DynamicItem" type="msnab:BaseDynamicItemType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CircleResult">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CircleTicket" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ab">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid"/>
<xsd:element name="abInfo" type="msnab:abInfoType"/>
<xsd:element name="lastChange" type="xsd:dateTime"/>
<xsd:element name="DynamicItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="RecentActivityItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="createDate" type="xsd:dateTime"/>
<xsd:element name="propertiesChanged" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABFindAllResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABFindAllResult" type="msnab:ABFindAllResultType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABContactAdd" type="msnab:ABContactAddRequestType"/>
<xsd:complexType name="ABContactAddRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="options" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="EnableAllowListManagement" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABContactAddResultType">
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABContactAddResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABContactAddResult" type="msnab:ABContactAddResultType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABContactDelete" type="msnab:ABContactDeleteRequestType"/>
<xsd:complexType name="ABContactDeleteRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactIdType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABContactDeleteResponse"/>
<xsd:element name="ABGroupContactAdd" type="msnab:ABGroupContactAddRequestType"/>
<xsd:complexType name="ABGroupContactAddRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="groupFilter" type="msnab:groupFilterType"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupContactAddOptions" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="fGenerateMissingQuickName" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="EnableAllowListManagement" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABGroupContactAddResultType">
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupContactAddResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABGroupContactAddResult" type="msnab:ABGroupContactAddResultType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABGroupAdd" type="msnab:ABGroupAddRequestType"/>
<xsd:complexType name="ABGroupAddRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="groupAddOptions">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="fRenameOnMsgrConflict" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GroupInfo" type="msnab:groupInfoType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABGroupAddResultType">
<xsd:sequence>
<xsd:element name="guid" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupAddResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABGroupAddResult" type="msnab:ABGroupAddResultType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABGroupUpdate" type="msnab:ABGroupUpdateRequestType"/>
<xsd:complexType name="ABGroupUpdateRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="groups">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Group" type="msnab:GroupType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupUpdateResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="ABGroupDelete" type="msnab:ABGroupDeleteRequestType"/>
<xsd:complexType name="ABGroupDeleteRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="groupFilter" type="msnab:groupFilterType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupDeleteResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="ABContactUpdate" type="msnab:ABContactUpdateRequestType"/>
<xsd:complexType name="ABContactUpdateRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABContactUpdateResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="ABGroupContactDelete" type="msnab:ABGroupContactDeleteRequestType"/>
<xsd:complexType name="ABGroupContactDeleteRequestType">
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid" fixed="00000000-0000-0000-0000-000000000000"/>
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="groupFilter" type="msnab:groupFilterType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABGroupContactDeleteResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="AddMember" type="msnab:AddMemberRequestType"/>
<xsd:complexType name="AddMemberRequestType">
<xsd:sequence>
<xsd:element name="serviceHandle" type="msnab:HandleType"/>
<xsd:element name="memberships">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Membership" type="msnab:Membership" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="AddMemberResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="DeleteMember" type="msnab:DeleteMemberRequestType"/>
<xsd:complexType name="DeleteMemberRequestType">
<xsd:sequence>
<xsd:element name="serviceHandle" type="msnab:HandleType"/>
<xsd:element name="memberships">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Membership" type="msnab:Membership" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="nsHandle" type="msnab:ContentHandleType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="DeleteMemberResponse">
<xsd:complexType/>
</xsd:element>
<xsd:complexType name="ABAddResponseType">
<xsd:sequence>
<xsd:element name="ABAddResult" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABAddResponse" type="msnab:ABAddResponseType"/>
<xsd:element name="ABAdd" type="msnab:ABAddRequestType"/>
<xsd:complexType name="ABAddRequestType">
<xsd:sequence>
<xsd:element name="abInfo" type="msnab:abInfoType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UpdateDynamicItemRequestType">
<xsd:sequence>
<xsd:element name="abId" type="xsd:string"/>
<xsd:element name="dynamicItems">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DynamicItem" type="msnab:BaseDynamicItemType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="UpdateDynamicItem" type="msnab:UpdateDynamicItemRequestType"/>
<xsd:element name="UpdateDynamicItemResponse"/>
<xsd:element name="ABFindContactsPaged" type="msnab:ABFindContactsPagedRequestType"/>
<xsd:complexType name="ABFindContactsPagedRequestType">
<xsd:sequence>
<xsd:element name="filterOptions" type="msnab:filterOptionsType"/>
<xsd:element name="abView" type="xsd:string"/>
<xsd:element name="extendedContent" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ABFindContactsPagedResultType">
<xsd:sequence>
<xsd:element name="Groups" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Group" type="msnab:GroupType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Contact" type="msnab:ContactType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CircleResult" type="msnab:CircleResultType"/>
<xsd:element name="Ab">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="abId" type="msnab:Guid"/>
<xsd:element name="abInfo" type="msnab:abInfoType"/>
<xsd:element name="lastChange" type="xsd:dateTime"/>
<xsd:element name="DynamicItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="RecentActivityItemLastChanged" type="xsd:dateTime"/>
<xsd:element name="createDate" type="xsd:dateTime"/>
<xsd:element name="propertiesChanged" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ABFindContactsPagedResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ABFindContactsPagedResult" type="msnab:ABFindContactsPagedResultType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WNApplicationHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ApplicationId" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WNAuthHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TicketToken" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WNServiceHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Version" type="xsd:token"/>
<xsd:element name="CacheKey" type="xsd:token" minOccurs="0"/>
<xsd:element name="CacheKeyChanged" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="PreferredHostName" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetContactsRecentActivity" type="msnab:GetContactsRecentActivityRequestType"/>
<xsd:complexType name="GetContactsRecentActivityRequestType">
<xsd:sequence>
<xsd:element name="entityHandle" type="msnab:entityHandle"/>
<xsd:element name="locales">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="string" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="count" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="GetContactsRecentActivityResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetContactsRecentActivityResult" type="msnab:GetContactsRecentActivityResultType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="GetContactsRecentActivityResultType">
<xsd:sequence>
<xsd:element name="Activities">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ActivityDetails" type="msnab:ActivityDetailsType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Templates">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RecentActivityTemplateContainer" type="msnab:RecentActivityTemplateContainerType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FeedUrl" type="xsd:anyURI"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ManageWLConnection" type="msnab:ManageWLConnectionRequestType"/>
<xsd:complexType name="ManageWLConnectionRequestType">
<xsd:sequence>
<xsd:element name="abHandle" type="msnab:abHandleType"/>
<xsd:element name="contactId" type="xsd:string"/>
<xsd:element name="connection" type="xsd:boolean"/>
<xsd:element name="presence" type="xsd:boolean"/>
<xsd:element name="action" type="xsd:integer"/>
<xsd:element name="relationshipType" type="xsd:int"/>
<xsd:element name="relationshipRole" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ManageWLConnectionResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ManageWLConnectionResult" type="msnab:ContactType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateContact" type="msnab:CreateContactType"/>
<xsd:complexType name="CreateContactType">
<xsd:sequence>
<xsd:element name="abHandle" type="msnab:abHandleType"/>
<xsd:element name="contactHandle" type="msnab:contactHandleType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="CreateContactResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CreateContactResult" type="msnab:ContactType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateCircle" type="msnab:CreateCircleRequestType"/>
<xsd:complexType name="CreateCircleRequestType">
<xsd:sequence>
<xsd:element name="properties" type="msnab:ContentInfoType"/>
<xsd:element name="callerInfo" type="msnab:callerInfoType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CreateCircleResponseType">
<xsd:sequence>
<xsd:element name="Id" type="msnab:Guid"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="CreateCircleResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CreateCircleResult" type="msnab:CreateCircleResponseType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

View File

@ -0,0 +1,532 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by wp (freezingsoft) -->
<definitions xmlns:msnab="http://www.msn.com/webservices/AddressBook" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.msn.com/webservices/AddressBook">
<types>
<ns:schema xmlns="http://www.w3.org/2001/XMLSchema">
<ns:import schemaLocation="msnab_servicetypes.xsd" namespace="http://www.msn.com/webservices/AddressBook"/>
</ns:schema>
</types>
<message name="ABHeader">
<part name="ApplicationHeader" element="msnab:ABApplicationHeader"/>
<part name="AuthHeader" element="msnab:ABAuthHeader"/>
</message>
<message name="FindMembershipMessage">
<part name="FindMembershipRequest" element="msnab:FindMembership"/>
</message>
<message name="ABFindAllMessage">
<part name="ABFindAllRequest" element="msnab:ABFindAll"/>
</message>
<message name="ABContactAddMessage">
<part name="ABContactAddRequest" element="msnab:ABContactAdd"/>
</message>
<message name="ABContactDeleteMessage">
<part name="ABContactDeleteRequest" element="msnab:ABContactDelete"/>
</message>
<message name="ABGroupContactAddMessage">
<part name="ABGroupContactAddRequest" element="msnab:ABGroupContactAdd"/>
</message>
<message name="ABGroupAddMessage">
<part name="ABGroupAddRequest" element="msnab:ABGroupAdd"/>
</message>
<message name="ABGroupUpdateMessage">
<part name="ABGroupUpdateRequest" element="msnab:ABGroupUpdate"/>
</message>
<message name="ABGroupDeleteMessage">
<part name="ABGroupDeleteRequest" element="msnab:ABGroupDelete"/>
</message>
<message name="ABGroupContactDeleteMessage">
<part name="ABGroupContactDeleteRequest" element="msnab:ABGroupContactDelete"/>
</message>
<message name="ABContactUpdateMessage">
<part name="ABContactUpdateRequest" element="msnab:ABContactUpdate"/>
</message>
<message name="AddMemberMessage">
<part name="AddMemberRequest" element="msnab:AddMember"/>
</message>
<message name="DeleteMemberMessage">
<part name="DeleteMemberRequest" element="msnab:DeleteMember"/>
</message>
<message name="ServiceHeader">
<part name="ServiceHeader" element="msnab:ServiceHeader"/>
</message>
<message name="FindMembershipResponseMessage">
<part name="FindMembershipResponse" element="msnab:FindMembershipResponse"/>
</message>
<message name="ABFindAllResponseMessage">
<part name="ABFindAllResponse" element="msnab:ABFindAllResponse"/>
</message>
<message name="ABContactAddResponseMessage">
<part name="ABContactAddResponse" element="msnab:ABContactAddResponse"/>
</message>
<message name="ABContactDeleteResponseMessage">
<part name="ABContactDeleteResponse" element="msnab:ABContactDeleteResponse"/>
</message>
<message name="ABGroupContactAddResponseMessage">
<part name="ABGroupContactAddResponse" element="msnab:ABGroupContactAddResponse"/>
</message>
<message name="ABGroupAddResponseMessage">
<part name="ABGroupAddResponse" element="msnab:ABGroupAddResponse"/>
</message>
<message name="ABGroupUpdateResponseMessage">
<part name="ABGroupUpdateResponse" element="msnab:ABGroupUpdateResponse"/>
</message>
<message name="ABGroupDeleteResponseMessage">
<part name="ABGroupDeleteResponse" element="msnab:ABGroupDeleteResponse"/>
</message>
<message name="ABGroupContactDeleteResponseMessage">
<part name="ABGroupContactDeleteResponse" element="msnab:ABGroupContactDeleteResponse"/>
</message>
<message name="ABContactUpdateResponseMessage">
<part name="ABContactUpdateResponse" element="msnab:ABContactUpdateResponse"/>
</message>
<message name="AddMemberResponseMessage">
<part name="AddMemberResponse" element="msnab:AddMemberResponse"/>
</message>
<message name="DeleteMemberResponseMessage">
<part name="DeleteMemberResponse" element="msnab:DeleteMemberResponse"/>
</message>
<message name="InvalidPassportUserMessage">
<part name="fault" element="msnab:InvalidPassportUser"/>
</message>
<message name="ABAddMessage">
<part name="ABAddRequest" element="msnab:ABAdd"/>
</message>
<message name="ABAddResponseMessage">
<part name="ABAddResponse" element="msnab:ABAddResponse"/>
</message>
<message name="UpdateDynamicItemMessage">
<part name="UpdateDynamicItem" element="msnab:UpdateDynamicItem"/>
</message>
<message name="UpdateDynamicItemResponseMessage">
<part name="UpdateDynamicItemResponse" element="msnab:UpdateDynamicItemResponse"/>
</message>
<message name="ABFindContactsPagedMessage">
<part name="ABFindContactsPagedRequest" element="msnab:ABFindContactsPaged"/>
</message>
<message name="ABFindContactsPagedResponseMessage">
<part name="ABFindContactsPagedResponse" element="msnab:ABFindContactsPagedResponse"/>
</message>
<message name="GetContactsRecentActivityMessage">
<part name="GetContactsRecentActivityRequest" element="msnab:GetContactsRecentActivity"/>
</message>
<message name="GetContactsRecentActivityResponseMessage">
<part name="GetContactsRecentActivityResponse" element="msnab:GetContactsRecentActivityResponse"/>
</message>
<message name="WNHeader">
<part name="WNApplicationHeader" element="msnab:WNApplicationHeader"/>
<part name="WNAuthHeader" element="msnab:WNAuthHeader"/>
<part name="WNServiceHeader" element="msnab:WNServiceHeader"/>
</message>
<message name="CreateCircleMessage">
<part name="CreateCircleRequest" element="msnab:CreateCircle"/>
</message>
<message name="CreateCircleResponseMessage">
<part name="CreateCircleResponse" element="msnab:CreateCircleResponse"/>
</message>
<message name="CreateContactMessage">
<part name="CreateContactRequest" element="msnab:CreateContact"/>
</message>
<message name="CreateContactResponseMessage">
<part name="CreateContactResponse" element="msnab:CreateContactResponse"/>
</message>
<message name="ManageWLConnectionMessage">
<part name="ManageWLConnection" element="msnab:ManageWLConnection"/>
</message>
<message name="ManageWLConnectionResponseMessage">
<part name="ManageWLConnectionResponse" element="msnab:ManageWLConnectionResponse"/>
</message>
<portType name="SharingServicePortType">
<operation name="FindMembership">
<input message="msnab:FindMembershipMessage"/>
<output message="msnab:FindMembershipResponseMessage"/>
</operation>
<operation name="AddMember">
<input message="msnab:AddMemberMessage"/>
<output message="msnab:AddMemberResponseMessage"/>
</operation>
<operation name="DeleteMember">
<input message="msnab:DeleteMemberMessage"/>
<output message="msnab:DeleteMemberResponseMessage"/>
</operation>
<operation name="CreateCircle">
<input message="msnab:CreateCircleMessage"/>
<output message="msnab:CreateCircleResponseMessage"/>
</operation>
</portType>
<portType name="ABServicePortType">
<operation name="ABFindAll">
<input message="msnab:ABFindAllMessage"/>
<output message="msnab:ABFindAllResponseMessage"/>
</operation>
<operation name="ABContactAdd">
<input message="msnab:ABContactAddMessage"/>
<output message="msnab:ABContactAddResponseMessage"/>
<fault name="InvalidPassportUserException" message="msnab:InvalidPassportUserMessage"/>
</operation>
<operation name="ABContactDelete">
<input message="msnab:ABContactDeleteMessage"/>
<output message="msnab:ABContactDeleteResponseMessage"/>
<fault name="InvalidPassportUserException" message="msnab:InvalidPassportUserMessage"/>
</operation>
<operation name="ABGroupContactAdd">
<input message="msnab:ABGroupContactAddMessage"/>
<output message="msnab:ABGroupContactAddResponseMessage"/>
<fault name="InvalidPassportUserException" message="msnab:InvalidPassportUserMessage"/>
</operation>
<operation name="ABGroupAdd">
<input message="msnab:ABGroupAddMessage"/>
<output message="msnab:ABGroupAddResponseMessage"/>
</operation>
<operation name="ABGroupUpdate">
<input message="msnab:ABGroupUpdateMessage"/>
<output message="msnab:ABGroupUpdateResponseMessage"/>
</operation>
<operation name="ABGroupDelete">
<input message="msnab:ABGroupDeleteMessage"/>
<output message="msnab:ABGroupDeleteResponseMessage"/>
</operation>
<operation name="ABGroupContactDelete">
<input message="msnab:ABGroupContactDeleteMessage"/>
<output message="msnab:ABGroupContactDeleteResponseMessage"/>
</operation>
<operation name="ABContactUpdate">
<input message="msnab:ABContactUpdateMessage"/>
<output message="msnab:ABContactUpdateResponseMessage"/>
</operation>
<operation name="ABAdd">
<input message="msnab:ABAddMessage"/>
<output message="msnab:ABAddResponseMessage"/>
</operation>
<operation name="UpdateDynamicItem">
<input message="msnab:UpdateDynamicItemMessage"/>
<output message="msnab:UpdateDynamicItemResponseMessage"/>
</operation>
<operation name="ABFindContactsPaged">
<input message="msnab:ABFindContactsPagedMessage"/>
<output message="msnab:ABFindContactsPagedResponseMessage"/>
</operation>
<operation name="CreateContact">
<input message="msnab:CreateContactMessage"/>
<output message="msnab:CreateContactResponseMessage"/>
</operation>
<operation name="ManageWLConnection">
<input message="msnab:ManageWLConnectionMessage"/>
<output message="msnab:ManageWLConnectionResponseMessage"/>
</operation>
</portType>
<portType name="WhatsUpServicePortType">
<operation name="GetContactsRecentActivity">
<input message="msnab:GetContactsRecentActivityMessage"/>
<output message="msnab:GetContactsRecentActivityResponseMessage"/>
</operation>
</portType>
<binding name="SharingServiceBinding" type="msnab:SharingServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="FindMembership">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/FindMembership"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="AddMember">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/AddMember"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="DeleteMember">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/DeleteMember"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="CreateCircle">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/CreateCircle"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
</binding>
<binding name="ABServiceBinding" type="msnab:ABServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="ABFindAll">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABFindAll"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABContactAdd">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABContactAdd"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
<fault name="InvalidPassportUserException">
<soap:fault name="InvalidPassportUserException" use="literal"/>
</fault>
</operation>
<operation name="ABContactDelete">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABContactDelete"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
<fault name="InvalidPassportUserException">
<soap:fault name="InvalidPassportUserException" use="literal"/>
</fault>
</operation>
<operation name="ABGroupContactAdd">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupContactAdd"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
<fault name="InvalidPassportUserException">
<soap:fault name="InvalidPassportUserException" use="literal"/>
</fault>
</operation>
<operation name="ABGroupAdd">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupAdd"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABGroupUpdate">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupUpdate"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABGroupDelete">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupDelete"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABGroupContactDelete">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABGroupContactDelete"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABContactUpdate">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABContactUpdate"/>
<input>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</input>
<output>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
<soap:body use="literal"/>
</output>
</operation>
<operation name="ABAdd">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABAdd"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
<operation name="UpdateDynamicItem">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/UpdateDynamicItem"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
<operation name="ABFindContactsPaged">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ABFindContactsPaged"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
<operation name="CreateContact">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/CreateContact"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
<operation name="ManageWLConnection">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/ManageWLConnection"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:ABHeader" part="ApplicationHeader" use="literal"/>
<soap:header message="msnab:ABHeader" part="AuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:ServiceHeader" part="ServiceHeader" use="literal"/>
</output>
</operation>
</binding>
<binding name="WhatsUpServiceBinding" type="msnab:WhatsUpServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetContactsRecentActivity">
<soap:operation soapAction="http://www.msn.com/webservices/AddressBook/GetContactsRecentActivity"/>
<input>
<soap:body use="literal"/>
<soap:header message="msnab:WNHeader" part="WNApplicationHeader" use="literal"/>
<soap:header message="msnab:WNHeader" part="WNAuthHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="msnab:WNHeader" part="WNServiceHeader" use="literal"/>
</output>
</operation>
</binding>
<service name="SharingService">
<port name="FindMembershipPort" binding="msnab:SharingServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/SharingService.asmx"/>
</port>
<port name="AddMemberPort" binding="msnab:SharingServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/SharingService.asmx"/>
</port>
<port name="DeleteMemberPort" binding="msnab:SharingServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/SharingService.asmx"/>
</port>
<port name="CreateCirclePort" binding="msnab:SharingServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/SharingService.asmx"/>
</port>
</service>
<service name="ABService">
<port name="ABFindAllPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABContactAddPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABContactDeletePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupContactAddPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupAddPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupUpdatePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupDeletePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABGroupContactDeletePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABContactUpdatePort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABAddPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="UpdateDynamicItemPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ABFindContactsPagedPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="CreateContactPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
<port name="ManageWLConnectionPort" binding="msnab:ABServiceBinding">
<soap:address location="https://contacts.msn.com/abservice/abservice.asmx"/>
</port>
</service>
<service name="WhatsUpService">
<port name="GetContactsRecentActivityPort" binding="msnab:WhatsUpServiceBinding">
<soap:address location="http://sup.live.com/whatsnew/whatsnewservice.asmx"/>
</port>
</service>
</definitions>

View File

@ -0,0 +1,132 @@
<?php
/**
* Table Definition for msn_waiting_message
*/
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
class Msn_waiting_message extends Memcached_DataObject {
public $__table = 'msn_waiting_message'; // table name
public $id; // int primary_key not_null auto_increment
public $screenname; // varchar(255) not_null
public $message; // text not_null
public $created; // datetime() not_null
public $claimed; // datetime()
/* Static get */
public function staticGet($k, $v = null) {
return Memcached_DataObject::staticGet('Msn_waiting_message', $k, $v);
}
/**
* return table definition for DB_DataObject
*
* DB_DataObject needs to know something about the table to manipulate
* instances. This method provides all the DB_DataObject needs to know.
*
* @return array array of column definitions
*/
public function table() {
return array('id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
'screenname' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'message' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'created' => DB_DATAOBJECT_TIME + DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'claimed' => DB_DATAOBJECT_TIME + DB_DATAOBJECT_STR);
}
/**
* return key definitions for DB_DataObject
*
* DB_DataObject needs to know about keys that the table has, since it
* won't appear in StatusNet's own keys list. In most cases, this will
* simply reference your keyTypes() function.
*
* @return array list of key field names
*/
public function keys() {
return array_keys($this->keyTypes());
}
/**
* return key definitions for Memcached_DataObject
*
* Our caching system uses the same key definitions, but uses a different
* method to get them. This key information is used to store and clear
* cached data, so be sure to list any key that will be used for static
* lookups.
*
* @return array associative array of key definitions, field name to type:
* 'K' for primary key: for compound keys, add an entry for each component;
* 'U' for unique keys: compound keys are not well supported here.
*/
public function keyTypes() {
return array('id' => 'K');
}
/**
* Magic formula for non-autoincrementing integer primary keys
*
* If a table has a single integer column as its primary key, DB_DataObject
* assumes that the column is auto-incrementing and makes a sequence table
* to do this incrementation. Since we don't need this for our class, we
* overload this method and return the magic formula that DB_DataObject needs.
*
* @return array magic three-false array that stops auto-incrementing.
*/
function sequenceKey() {
return array(false, false, false);
}
/**
* @param string $screenname screenname or array of screennames to pull from
* If not specified, checks all queues in the system.
*/
public static function top($screenname = null) {
$wm = new Msn_waiting_message();
if ($screenname) {
if (is_array($screenname)) {
// @fixme use safer escaping
$list = implode("','", array_map('addslashes', $screenname));
$wm->whereAdd("screenname in ('$list')");
} else {
$wm->screenname = $screenname;
}
}
$wm->orderBy('created');
$wm->whereAdd('claimed is null');
$wm->limit(1);
$cnt = $wm->find(true);
if ($cnt) {
# XXX: potential race condition
# can we force it to only update if claimed is still null
# (or old)?
common_log(LOG_INFO, 'claiming msn waiting message id = ' . $wm->id);
$orig = clone($wm);
$wm->claimed = common_sql_now();
$result = $wm->update($orig);
if ($result) {
common_log(LOG_INFO, 'claim succeeded.');
return $wm;
} else {
common_log(LOG_INFO, 'claim failed.');
}
}
$wm = null;
return null;
}
/**
* Release a claimed item.
*/
public function releaseClaim() {
// DB_DataObject doesn't let us save nulls right now
$sql = sprintf("UPDATE msn_waiting_message SET claimed=NULL WHERE id=%d", $this->id);
$this->query($sql);
$this->claimed = null;
$this->encache();
}
}

275
plugins/Msn/msnmanager.php Normal file
View File

@ -0,0 +1,275 @@
<?php
/*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2008, 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
/**
* MSN background connection manager for MSN-using queue handlers,
* allowing them to send outgoing messages on the right connection.
*
* Input is handled during socket select loop, keepalive pings during idle.
* Any incoming messages will be handled.
*
* In a multi-site queuedaemon.php run, one connection will be instantiated
* for each site being handled by the current process that has MSN enabled.
*/
class MsnManager extends ImManager {
public $conn = null;
protected $lastPing = null;
protected $pingInterval;
/**
* Initialise connection to server.
*
* @return boolean true on success
*/
public function start($master) {
if (parent::start($master)) {
$this->requeue_waiting_messages();
$this->connect();
return true;
} else {
return false;
}
}
/**
* Return any open sockets that the run loop should listen
* for input on.
*
* @return array Array of socket resources
*/
public function getSockets() {
$this->connect();
if ($this->conn) {
return $this->conn->getSockets();
} else {
return array();
}
}
/**
* Idle processing for io manager's execution loop.
* Send keepalive pings to server.
*
* @return void
*/
public function idle($timeout = 0) {
if (empty($this->lastPing) || time() - $this->lastPing > $this->pingInterval) {
$this->send_ping();
}
}
/**
* Message pump is triggered on socket input, so we only need an idle()
* call often enough to trigger our outgoing pings.
*/
public function timeout() {
return $this->pingInterval;
}
/**
* Process MSN events that have come in over the wire.
*
* @param resource $socket Socket ready
* @return void
*/
public function handleInput($socket) {
common_log(LOG_DEBUG, 'Servicing the MSN queue.');
$this->stats('msn_process');
$this->conn->receive();
}
/**
* Initiate connection
*
* @return void
*/
public function connect() {
if (!$this->conn) {
$this->conn = new MSN(
array(
'user' => $this->plugin->user,
'password' => $this->plugin->password,
'alias' => $this->plugin->nickname,
'psm' => 'Send me a message to post a notice',
'debug' => false
)
);
$this->conn->registerHandler('IMin', array($this, 'handle_msn_message'));
$this->conn->registerHandler('SessionReady', array($this, 'handle_session_ready'));
$this->conn->registerHandler('Pong', array($this, 'update_ping_time'));
$this->conn->registerHandler('ConnectFailed', array($this, 'handle_connect_failed'));
$this->conn->registerHandler('Reconnect', array($this, 'handle_reconnect'));
$this->conn->signon();
$this->lastPing = time();
}
return $this->conn;
}
/**
* Called by the idle process to send a ping
* when necessary
*
* @return void
*/
protected function send_ping() {
$this->connect();
if (!$this->conn) {
return false;
}
$this->conn->sendPing();
$this->lastPing = time();
$this->pingInterval = 50;
return true;
}
/**
* Update the time till the next ping
*
* @param $data Time till next ping
* @return void
*/
public function update_ping_time($data) {
$this->pingInterval = $data;
}
/**
* Called via a callback when a message is received
*
* Passes it back to the queuing system
*
* @param array $data Data
* @return boolean
*/
public function handle_msn_message($data) {
$this->plugin->enqueue_incoming_raw($data);
return true;
}
/**
* Called via a callback when a session becomes ready
*
* @param array $data Data
*/
public function handle_session_ready($data) {
$sessionFailed = false;
$wm = Msn_waiting_message::top($data['to']);
while ($wm != NULL) {
if ($sessionFailed) {
$this->plugin->send_message($wm->screenname, $wm->message);
$sessionFailed = true;
} elseif (!$this->conn->sendMessage($wm->screenname, $wm->message, $ignore)) {
$this->plugin->send_message($wm->screenname, $wm->message);
}
$wm->delete();
$wm = Msn_waiting_message::top($data['to']);
}
}
/**
* Requeue messages from the waiting table so we try
* to send them again
*
* @return void
*/
protected function requeue_waiting_messages() {
$wm = Msn_waiting_message::top($data['to']);
while ($wm != NULL) {
$this->plugin->send_message($wm->screenname, $wm->message);
$wm->delete();
$wm = Msn_waiting_message::top($data['to']);
}
}
/**
* Called by callback to log failure during connect
*
* @param void $data Not used (there to keep callback happy)
* @return void
*/
public function handle_connect_failed($data) {
common_log(LOG_NOTICE, 'MSN connect failed, retrying');
}
/**
* Called by callback to log reconnection
*
* @param void $data Not used (there to keep callback happy)
* @return void
*/
public function handle_reconnect($data) {
common_log(LOG_NOTICE, 'MSN reconnecting');
// Requeue messages waiting in the DB
$this->requeue_waiting_messages();
}
/**
* Enters a message into the database for sending via a callback
* when the session is established
*
* @param string $to Intended recipient
* @param string $message Message
*/
protected function enqueue_waiting_message($to, $message) {
$wm = new Msn_waiting_message();
$wm->screenname = $to;
$wm->message = $message;
$wm->created = common_sql_now();
$result = $wm->insert();
if (!$result) {
common_log_db_error($wm, 'INSERT', __FILE__);
throw new ServerException('DB error inserting queue item');
}
return true;
}
/**
* Send a message using the daemon
*
* @param $data Message data
* @return boolean true on success
*/
public function send_raw_message($data) {
$this->connect();
if (!$this->conn) {
return false;
}
$waitForSession = false;
if (!$this->conn->sendMessage($data['to'], $data['message'], $waitForSession)) {
if ($waitForSession) {
$this->enqueue_waiting_message($data['to'], $data['message']);
} else {
return false;
}
}
// Sending a command updates the time till next ping
$this->lastPing = time();
$this->pingInterval = 50;
return true;
}
}