blob: 66edf999b91f2facd642dcc473be60a0445d71cf [file] [log] [blame]
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="types"
elementFormDefault="qualified"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
targetNamespace="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:tns="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
<!-- SOAP header to indicate language for mailbox interaction-->
<xs:element name="MailboxCulture" type="xs:language"/>
<!-- Server to Server auth SOAP header information -->
<xs:complexType name="SidAndAttributesType">
<xs:sequence>
<xs:element name="SecurityIdentifier" type="xs:string"/>
</xs:sequence>
<xs:attribute name="Attributes" type="xs:unsignedInt" use="required"/>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfGroupIdentifiersType">
<xs:sequence>
<xs:element name="GroupIdentifier" type="t:SidAndAttributesType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfRestrictedGroupIdentifiersType">
<xs:sequence>
<xs:element name="RestrictedGroupIdentifier" type="t:SidAndAttributesType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SerializedSecurityContextType">
<xs:sequence>
<xs:element name="UserSid" type="xs:string"/>
<xs:element name="GroupSids" type="t:NonEmptyArrayOfGroupIdentifiersType" minOccurs="0"/>
<xs:element name="RestrictedGroupSids" type="t:NonEmptyArrayOfRestrictedGroupIdentifiersType" minOccurs="0"/>
<xs:element name="PrimarySmtpAddress" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element name="SerializedSecurityContext" type="t:SerializedSecurityContextType"/>
<xs:complexType name="ConnectingSIDType">
<xs:sequence>
<xs:element name="PrincipalName" type="xs:string" minOccurs="0"/>
<xs:element name="SID" type="xs:string" minOccurs="0"/>
<xs:element name="PrimarySmtpAddress" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ExchangeImpersonationType">
<xs:sequence>
<xs:element name="ConnectingSID" type="t:ConnectingSIDType" />
</xs:sequence>
</xs:complexType>
<xs:element name="ExchangeImpersonation" type="t:ExchangeImpersonationType" />
<!-- Used in the SOAP header of responses for diagnostics purposes. -->
<xs:element name="ServerVersionInfo">
<xs:complexType>
<xs:attribute name="MajorVersion" type="xs:int" use="optional"/>
<xs:attribute name="MinorVersion" type="xs:int" use="optional"/>
<xs:attribute name="MajorBuildNumber" type="xs:int" use="optional"/>
<xs:attribute name="MinorBuildNumber" type="xs:int" use="optional"/>
</xs:complexType>
</xs:element>
<!-- Email address/participant types -->
<xs:simpleType name="NonEmptyStringType">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="BaseEmailAddressType" />
<xs:simpleType name="MailboxTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="Mailbox" />
<xs:enumeration value="PublicDL" />
<xs:enumeration value="PrivateDL" />
<xs:enumeration value="Contact" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="EmailAddressType">
<xs:annotation>
<xs:documentation>Identifier for a fully resolved email address</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="t:BaseEmailAddressType">
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
<xs:element name="EmailAddress" type="t:NonEmptyStringType" minOccurs="0"/>
<xs:element name="RoutingType" type="t:NonEmptyStringType" minOccurs="0"/>
<xs:element name="MailboxType" type="t:MailboxTypeType" minOccurs="0" />
<!-- for private DL (CDL) only-->
<xs:element name="ItemId" type="t:ItemIdType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - -->
<!-- Recipient List -->
<!-- - - - - - - - - - - - - - - - - - - -->
<xs:complexType name="ArrayOfRecipientsType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Mailbox" type="t:EmailAddressType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="SingleRecipientType">
<xs:choice>
<xs:element name="Mailbox" type="t:EmailAddressType"/>
</xs:choice>
</xs:complexType>
<!-- URIs for frequently referenced types -->
<xs:simpleType name="UnindexedFieldURIType">
<xs:restriction base="xs:string">
<!-- Folder fields -->
<xs:enumeration value="folder:FolderId"/>
<xs:enumeration value="folder:ParentFolderId"/>
<xs:enumeration value="folder:DisplayName" />
<xs:enumeration value="folder:UnreadCount" />
<xs:enumeration value="folder:TotalCount" />
<xs:enumeration value="folder:ChildFolderCount" />
<xs:enumeration value="folder:FolderClass" />
<xs:enumeration value="folder:SearchParameters"/>
<xs:enumeration value="folder:ManagedFolderInformation"/>
<!-- Item fields -->
<xs:enumeration value="item:ItemId"/>
<xs:enumeration value="item:ParentFolderId"/>
<xs:enumeration value="item:ItemClass" />
<xs:enumeration value="item:MimeContent"/>
<xs:enumeration value="item:Attachments" />
<xs:enumeration value="item:Subject" />
<xs:enumeration value="item:DateTimeReceived" />
<xs:enumeration value="item:Size" />
<xs:enumeration value="item:Categories" />
<xs:enumeration value="item:HasAttachments"/>
<xs:enumeration value="item:Importance"/>
<xs:enumeration value="item:InReplyTo"/>
<xs:enumeration value="item:InternetMessageHeaders" />
<xs:enumeration value="item:IsDraft" />
<xs:enumeration value="item:IsFromMe" />
<xs:enumeration value="item:IsResend" />
<xs:enumeration value="item:IsSubmitted" />
<xs:enumeration value="item:IsUnmodified" />
<xs:enumeration value="item:DateTimeSent" />
<xs:enumeration value="item:DateTimeCreated" />
<xs:enumeration value="item:Body" />
<xs:enumeration value="item:ResponseObjects"/>
<xs:enumeration value="item:Sensitivity"/>
<xs:enumeration value="item:ReminderDueBy"/>
<xs:enumeration value="item:ReminderIsSet"/>
<xs:enumeration value="item:ReminderMinutesBeforeStart"/>
<xs:enumeration value="item:DisplayTo"/>
<xs:enumeration value="item:DisplayCc"/>
<xs:enumeration value="item:Culture"/>
<!-- Messages -->
<xs:enumeration value="message:ConversationIndex"/>
<xs:enumeration value="message:ConversationTopic"/>
<xs:enumeration value="message:InternetMessageId"/>
<xs:enumeration value="message:IsRead"/>
<xs:enumeration value="message:IsResponseRequested"/>
<xs:enumeration value="message:IsReadReceiptRequested"/>
<xs:enumeration value="message:IsDeliveryReceiptRequested"/>
<xs:enumeration value="message:References"/>
<xs:enumeration value="message:ReplyTo"/>
<xs:enumeration value="message:From" />
<xs:enumeration value="message:Sender" />
<xs:enumeration value="message:ToRecipients" />
<xs:enumeration value="message:CcRecipients" />
<xs:enumeration value="message:BccRecipients" />
<!-- Meeting Message -->
<xs:enumeration value="meeting:AssociatedCalendarItemId"/>
<xs:enumeration value="meeting:IsDelegated"/>
<xs:enumeration value="meeting:IsOutOfDate"/>
<xs:enumeration value="meeting:HasBeenProcessed"/>
<xs:enumeration value="meeting:ResponseType"/>
<!-- Meeting Request -->
<xs:enumeration value="meetingRequest:MeetingRequestType"/>
<xs:enumeration value="meetingRequest:IntendedFreeBusyStatus"/>
<!-- Calendar items and appointments -->
<xs:enumeration value="calendar:Start"/>
<xs:enumeration value="calendar:End"/>
<xs:enumeration value="calendar:OriginalStart"/>
<xs:enumeration value="calendar:IsAllDayEvent"/>
<xs:enumeration value="calendar:LegacyFreeBusyStatus"/>
<xs:enumeration value="calendar:Location"/>
<xs:enumeration value="calendar:When"/>
<xs:enumeration value="calendar:IsMeeting"/>
<xs:enumeration value="calendar:IsCancelled"/>
<xs:enumeration value="calendar:IsRecurring"/>
<xs:enumeration value="calendar:MeetingRequestWasSent"/>
<xs:enumeration value="calendar:IsResponseRequested"/>
<xs:enumeration value="calendar:CalendarItemType"/>
<xs:enumeration value="calendar:MyResponseType"/>
<xs:enumeration value="calendar:Organizer"/>
<xs:enumeration value="calendar:RequiredAttendees"/>
<xs:enumeration value="calendar:OptionalAttendees"/>
<xs:enumeration value="calendar:Resources"/>
<xs:enumeration value="calendar:ConflictingMeetingCount"/>
<xs:enumeration value="calendar:AdjacentMeetingCount"/>
<xs:enumeration value="calendar:ConflictingMeetings"/>
<xs:enumeration value="calendar:AdjacentMeetings"/>
<xs:enumeration value="calendar:Duration"/>
<xs:enumeration value="calendar:TimeZone"/>
<xs:enumeration value="calendar:AppointmentReplyTime"/>
<xs:enumeration value="calendar:AppointmentSequenceNumber"/>
<xs:enumeration value="calendar:AppointmentState"/>
<xs:enumeration value="calendar:Recurrence"/>
<xs:enumeration value="calendar:FirstOccurrence"/>
<xs:enumeration value="calendar:LastOccurrence"/>
<xs:enumeration value="calendar:ModifiedOccurrences"/>
<xs:enumeration value="calendar:DeletedOccurrences"/>
<xs:enumeration value="calendar:MeetingTimeZone"/>
<xs:enumeration value="calendar:ConferenceType"/>
<xs:enumeration value="calendar:AllowNewTimeProposal"/>
<xs:enumeration value="calendar:IsOnlineMeeting"/>
<xs:enumeration value="calendar:MeetingWorkspaceUrl"/>
<xs:enumeration value="calendar:NetShowUrl"/>
<!-- Task properties -->
<xs:enumeration value="task:ActualWork"/>
<xs:enumeration value="task:AssignedTime"/>
<xs:enumeration value="task:BillingInformation"/>
<xs:enumeration value="task:ChangeCount"/>
<xs:enumeration value="task:Companies"/>
<xs:enumeration value="task:CompleteDate"/>
<xs:enumeration value="task:Contacts"/>
<xs:enumeration value="task:DelegationState"/>
<xs:enumeration value="task:Delegator"/>
<xs:enumeration value="task:DueDate"/>
<xs:enumeration value="task:IsAssignmentEditable"/>
<xs:enumeration value="task:IsComplete"/>
<xs:enumeration value="task:IsRecurring"/>
<xs:enumeration value="task:IsTeamTask"/>
<xs:enumeration value="task:Mileage"/>
<xs:enumeration value="task:Owner"/>
<xs:enumeration value="task:PercentComplete"/>
<xs:enumeration value="task:Recurrence"/>
<xs:enumeration value="task:StartDate"/>
<xs:enumeration value="task:Status"/>
<xs:enumeration value="task:StatusDescription"/>
<xs:enumeration value="task:TotalWork"/>
<!-- Contacts -->
<xs:enumeration value="contacts:AssistantName" />
<xs:enumeration value="contacts:Birthday" />
<xs:enumeration value="contacts:BusinessHomePage" />
<xs:enumeration value="contacts:Children" />
<xs:enumeration value="contacts:Companies" />
<xs:enumeration value="contacts:CompanyName" />
<xs:enumeration value="contacts:CompleteName" />
<xs:enumeration value="contacts:ContactSource" />
<xs:enumeration value="contacts:Culture" />
<xs:enumeration value="contacts:Department" />
<xs:enumeration value="contacts:DisplayName" />
<xs:enumeration value="contacts:EmailAddresses" />
<xs:enumeration value="contacts:FileAs" />
<xs:enumeration value="contacts:FileAsMapping" />
<xs:enumeration value="contacts:Generation" />
<xs:enumeration value="contacts:GivenName" />
<xs:enumeration value="contacts:ImAddresses" />
<xs:enumeration value="contacts:Initials" />
<xs:enumeration value="contacts:JobTitle" />
<xs:enumeration value="contacts:Manager" />
<xs:enumeration value="contacts:MiddleName" />
<xs:enumeration value="contacts:Mileage" />
<xs:enumeration value="contacts:Nickname" />
<xs:enumeration value="contacts:OfficeLocation" />
<xs:enumeration value="contacts:PhoneNumbers" />
<xs:enumeration value="contacts:PhysicalAddresses" />
<xs:enumeration value="contacts:PostalAddressIndex" />
<xs:enumeration value="contacts:Profession" />
<xs:enumeration value="contacts:SpouseName" />
<xs:enumeration value="contacts:Surname" />
<xs:enumeration value="contacts:WeddingAnniversary" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DictionaryURIType">
<xs:restriction base="xs:string">
<xs:enumeration value="item:InternetMessageHeader" />
<xs:enumeration value="contacts:ImAddress" />
<xs:enumeration value="contacts:PhysicalAddress:Street" />
<xs:enumeration value="contacts:PhysicalAddress:City" />
<xs:enumeration value="contacts:PhysicalAddress:State" />
<xs:enumeration value="contacts:PhysicalAddress:CountryOrRegion" />
<xs:enumeration value="contacts:PhysicalAddress:PostalCode" />
<xs:enumeration value="contacts:PhoneNumber" />
<xs:enumeration value="contacts:EmailAddress" />
</xs:restriction>
</xs:simpleType>
<!-- URIs for property types used in MessageXml -->
<xs:simpleType name="ExceptionPropertyURIType">
<xs:restriction base="xs:string">
<!-- Attachment fields -->
<xs:enumeration value="attachment:Name"/>
<xs:enumeration value="attachment:ContentType"/>
<xs:enumeration value="attachment:Content" />
<!-- Recurrence fields -->
<xs:enumeration value="recurrence:Month"/>
<xs:enumeration value="recurrence:DayOfWeekIndex"/>
<xs:enumeration value="recurrence:DaysOfWeek" />
<xs:enumeration value="recurrence:DayOfMonth"/>
<xs:enumeration value="recurrence:Interval" />
<xs:enumeration value="recurrence:NumberOfOccurrences" />
<xs:enumeration value="timezone:Offset" />
</xs:restriction>
</xs:simpleType>
<!-- path types -->
<xs:simpleType name="GuidType">
<xs:annotation>
<xs:documentation>
The regular expression captures the standard representation of a GUID
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs: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}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DistinguishedPropertySetType">
<xs:annotation>
<xs:documentation>
Defines the well known property set ids for extended properties.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Meeting"/>
<xs:enumeration value="Appointment"/>
<xs:enumeration value="Common"/>
<xs:enumeration value="PublicStrings"/>
<xs:enumeration value="Address"/>
<xs:enumeration value="InternetHeaders"/>
<xs:enumeration value="CalendarAssistant"/>
<xs:enumeration value="UnifiedMessaging"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MapiPropertyTypeType">
<xs:annotation>
<xs:documentation>
Includes all of the extended property types that we support. Note that Error, Null,
Object and Object array can not be used in restrictions, or for setting/getting values.
They are only there for error reporting purposes.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="ApplicationTime"/>
<xs:enumeration value="ApplicationTimeArray"/>
<xs:enumeration value="Binary"/>
<xs:enumeration value="BinaryArray"/>
<xs:enumeration value="Boolean"/>
<xs:enumeration value="CLSID"/>
<xs:enumeration value="CLSIDArray"/>
<xs:enumeration value="Currency"/>
<xs:enumeration value="CurrencyArray"/>
<xs:enumeration value="Double"/>
<xs:enumeration value="DoubleArray"/>
<xs:enumeration value="Error"/>
<xs:enumeration value="Float"/>
<xs:enumeration value="FloatArray"/>
<xs:enumeration value="Integer"/>
<xs:enumeration value="IntegerArray"/>
<xs:enumeration value="Long"/>
<xs:enumeration value="LongArray"/>
<xs:enumeration value="Null"/>
<xs:enumeration value="Object"/>
<xs:enumeration value="ObjectArray"/>
<xs:enumeration value="Short"/>
<xs:enumeration value="ShortArray"/>
<xs:enumeration value="SystemTime"/>
<xs:enumeration value="SystemTimeArray"/>
<xs:enumeration value="String"/>
<xs:enumeration value="StringArray"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="BasePathToElementType" abstract="true"/>
<xs:complexType name="PathToUnindexedFieldType">
<xs:complexContent>
<xs:extension base="t:BasePathToElementType">
<xs:attribute name="FieldURI" type="t:UnindexedFieldURIType" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="PathToIndexedFieldType">
<xs:complexContent>
<xs:extension base="t:BasePathToElementType">
<xs:attribute name="FieldURI" type="t:DictionaryURIType" use="required" />
<xs:attribute name="FieldIndex" type="xs:string" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="PathToExceptionFieldType">
<xs:complexContent>
<xs:extension base="t:BasePathToElementType">
<xs:attribute name="FieldURI" type="t:ExceptionPropertyURIType" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="PropertyTagType">
<xs:annotation>
<xs:documentation>
This type represents the property tag (MINUS the type part). There are two options
for representation:
1. Hex ==> 0x3fa4
2. Decimal ==> 0-65535
</xs:documentation>
</xs:annotation>
<xs:union memberTypes ="xs:unsignedShort">
<xs:simpleType id="HexPropertyTagType">
<xs:restriction base="xs:string">
<xs:pattern value="(0x|0X)[0-9A-Fa-f]{1,4}"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:complexType name="PathToExtendedFieldType">
<xs:annotation>
<xs:documentation>
Represents an extended property. Note that there are only a couple of valid attribute
combinations. Note that all occurances require the PropertyType attribute.
1. (DistinguishedPropertySetId || PropertySetId) + (PropertyName || Property Id)
2. PropertyTag
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="t:BasePathToElementType">
<xs:attribute name="DistinguishedPropertySetId" type="t:DistinguishedPropertySetType" use="optional"/>
<xs:attribute name="PropertySetId" type="t:GuidType" use="optional"/>
<xs:attribute name="PropertyTag" type="t:PropertyTagType" use="optional"/>
<xs:attribute name="PropertyName" type="xs:string" use="optional"/>
<xs:attribute name="PropertyId" type="xs:int" use="optional"/>
<xs:attribute name="PropertyType" type="t:MapiPropertyTypeType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Path" abstract="true" type="t:BasePathToElementType"/>
<xs:element name="FieldURI" type="t:PathToUnindexedFieldType" substitutionGroup="t:Path"/>
<xs:element name="IndexedFieldURI" type="t:PathToIndexedFieldType" substitutionGroup="t:Path" />
<xs:element name="ExceptionFieldURI" type="t:PathToExceptionFieldType" substitutionGroup="t:Path" />
<xs:element name="ExtendedFieldURI" type="t:PathToExtendedFieldType" substitutionGroup="t:Path"/>
<!-- Arrays of paths -->
<xs:complexType name="NonEmptyArrayOfPathsToElementType">
<!-- using choice here so that proxy generator will not flatten the array and thus lose the
item element names -->
<xs:choice maxOccurs ="unbounded">
<xs:element ref="t:Path"/>
</xs:choice>
</xs:complexType>
<!-- ExtendedProperty value instances -->
<xs:complexType name="NonEmptyArrayOfPropertyValuesType">
<xs:choice>
<xs:element name="Value" type="xs:string" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="ExtendedPropertyType">
<xs:annotation>
<xs:documentation>
Represents an extended property instance (both its path identifier along with its
associated value).
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="ExtendedFieldURI" type="t:PathToExtendedFieldType"/>
<xs:choice>
<xs:element name="Value" type="xs:string"/>
<xs:element name="Values" type="t:NonEmptyArrayOfPropertyValuesType"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<!-- Query Traversal types -->
<xs:simpleType name="FolderQueryTraversalType">
<xs:annotation>
<xs:documentation>Types of sub-tree traversal for deletion and enumeration</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Shallow" />
<xs:enumeration value="Deep" />
<xs:enumeration value="SoftDeleted" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SearchFolderTraversalType">
<xs:annotation>
<xs:documentation>Types of sub-tree traversal for deletion and enumeration</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Shallow" />
<xs:enumeration value="Deep" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ItemQueryTraversalType">
<xs:annotation>
<xs:documentation>Types of sub-tree traversal for deletion and enumeration</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Shallow" />
<xs:enumeration value="SoftDeleted" />
</xs:restriction>
</xs:simpleType>
<!-- Default shape names for response shapes -->
<xs:simpleType name="DefaultShapeNamesType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="IdOnly" />
<xs:enumeration value="Default" />
<xs:enumeration value="AllProperties" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BodyTypeResponseType">
<xs:restriction base="xs:string">
<xs:enumeration value="Best" />
<xs:enumeration value="HTML" />
<xs:enumeration value="Text" />
</xs:restriction>
</xs:simpleType>
<!-- Placeholder type from which all folder shape properties are to be derived -->
<xs:complexType name="FolderResponseShapeType">
<xs:sequence>
<xs:element name="BaseShape" type="t:DefaultShapeNamesType" />
<xs:element name="AdditionalProperties" type="t:NonEmptyArrayOfPathsToElementType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ItemResponseShapeType">
<xs:sequence>
<xs:element name="BaseShape" type="t:DefaultShapeNamesType" />
<xs:element name="IncludeMimeContent" type="xs:boolean" minOccurs="0" />
<xs:element name="BodyType" type="t:BodyTypeResponseType" minOccurs="0" />
<xs:element name="AdditionalProperties" type="t:NonEmptyArrayOfPathsToElementType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="AttachmentResponseShapeType">
<xs:sequence>
<xs:element name="IncludeMimeContent" type="xs:boolean" minOccurs="0" />
<xs:element name="BodyType" type="t:BodyTypeResponseType" minOccurs="0" />
<xs:element name="AdditionalProperties" type="t:NonEmptyArrayOfPathsToElementType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="DisposalType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="HardDelete" />
<xs:enumeration value="SoftDelete" />
<xs:enumeration value="MoveToDeletedItems" />
</xs:restriction>
</xs:simpleType>
<!-- auto-conflict resolution levels -->
<xs:simpleType name="ConflictResolutionType">
<xs:annotation>
<xs:documentation>Type of conflict resolution to attempt during update</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="NeverOverwrite" />
<xs:enumeration value="AutoResolve" />
<xs:enumeration value="AlwaysOverwrite" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ResponseClassType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Success" />
<xs:enumeration value="Warning" />
<xs:enumeration value="Error" />
</xs:restriction>
</xs:simpleType>
<!-- Core update operations -->
<xs:complexType name="ChangeDescriptionType" abstract="true">
<!-- This path element needs some explanation. For update operations, only ONE
property can be modified within a single request. That single property must be
referenced in the Path element. The Item/Folder element in the derived classes
can then only hold a single property that is in agreement with the single path
element-->
<xs:sequence>
<xs:element ref="t:Path"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ItemChangeDescriptionType">
<xs:complexContent>
<xs:extension base="t:ChangeDescriptionType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="FolderChangeDescriptionType">
<xs:complexContent>
<xs:extension base="t:ChangeDescriptionType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SetItemFieldType">
<xs:complexContent>
<xs:extension base="t:ItemChangeDescriptionType">
<xs:choice>
<xs:element name="Item" type="t:ItemType"/>
<xs:element name="Message" type="t:MessageType"/>
<xs:element name="CalendarItem" type="t:CalendarItemType"/>
<xs:element name="Contact" type="t:ContactItemType"/>
<xs:element name="DistributionList" type="t:DistributionListType"/>
<xs:element name="MeetingMessage" type="t:MeetingMessageType"/>
<xs:element name="MeetingRequest" type="t:MeetingRequestMessageType"/>
<xs:element name="MeetingResponse" type="t:MeetingResponseMessageType"/>
<xs:element name="MeetingCancellation" type="t:MeetingCancellationMessageType"/>
<xs:element name="Task" type="t:TaskType"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SetFolderFieldType">
<xs:complexContent>
<xs:extension base="t:FolderChangeDescriptionType">
<xs:choice>
<xs:element name="Folder" type="t:FolderType"/>
<xs:element name="CalendarFolder" type="t:CalendarFolderType"/>
<xs:element name="ContactsFolder" type="t:ContactsFolderType"/>
<xs:element name="SearchFolder" type="t:SearchFolderType"/>
<xs:element name="TasksFolder" type="t:TasksFolderType"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DeleteItemFieldType">
<xs:complexContent>
<xs:extension base="t:ItemChangeDescriptionType">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DeleteFolderFieldType">
<xs:complexContent>
<xs:extension base="t:FolderChangeDescriptionType">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AppendToItemFieldType">
<xs:complexContent>
<xs:extension base="t:ItemChangeDescriptionType">
<xs:choice>
<xs:element name="Item" type="t:ItemType"/>
<xs:element name="Message" type="t:MessageType"/>
<xs:element name="CalendarItem" type="t:CalendarItemType"/>
<xs:element name="Contact" type="t:ContactItemType"/>
<xs:element name="DistributionList" type="t:DistributionListType"/>
<xs:element name="MeetingMessage" type="t:MeetingMessageType"/>
<xs:element name="MeetingRequest" type="t:MeetingRequestMessageType"/>
<xs:element name="MeetingResponse" type="t:MeetingResponseMessageType"/>
<xs:element name="MeetingCancellation" type="t:MeetingCancellationMessageType"/>
<xs:element name="Task" type="t:TaskType"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AppendToFolderFieldType">
<xs:complexContent>
<xs:extension base="t:FolderChangeDescriptionType">
<xs:sequence>
<xs:choice>
<xs:element name="Folder" type="t:FolderType"/>
<xs:element name="CalendarFolder" type="t:CalendarFolderType"/>
<xs:element name="ContactsFolder" type="t:ContactsFolderType"/>
<xs:element name="SearchFolder" type="t:SearchFolderType"/>
<xs:element name="TasksFolder" type="t:TasksFolderType"/>
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfItemChangeDescriptionsType">
<xs:choice maxOccurs="unbounded">
<xs:element name="AppendToItemField" type="t:AppendToItemFieldType"/>
<xs:element name="SetItemField" type="t:SetItemFieldType"/>
<xs:element name="DeleteItemField" type="t:DeleteItemFieldType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfFolderChangeDescriptionsType">
<xs:choice maxOccurs="unbounded">
<xs:element name="AppendToFolderField" type="t:AppendToFolderFieldType"/>
<xs:element name="SetFolderField" type="t:SetFolderFieldType"/>
<xs:element name="DeleteFolderField" type="t:DeleteFolderFieldType"/>
</xs:choice>
</xs:complexType>
<!-- Updating an item. -->
<xs:complexType name="ItemChangeType">
<xs:sequence>
<xs:choice>
<xs:element name="ItemId" type="t:ItemIdType" />
<xs:element name="OccurrenceItemId" type="t:OccurrenceItemIdType"/>
<xs:element name="RecurringMasterItemId" type="t:RecurringMasterItemIdType"/>
</xs:choice>
<xs:element name="Updates" type="t:NonEmptyArrayOfItemChangeDescriptionsType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfItemChangesType">
<xs:sequence>
<xs:element name="ItemChange" type="t:ItemChangeType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- Other headers -->
<xs:complexType name="InternetHeaderType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="HeaderName" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfInternetHeadersType">
<xs:sequence>
<xs:element name="InternetMessageHeader" type="t:InternetHeaderType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- Attachments -->
<!-- This type is used in GetAttachment -->
<xs:complexType name="RequestAttachmentIdType">
<xs:complexContent>
<xs:extension base="t:BaseItemIdType">
<xs:attribute name="Id" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- This type is used in CreateAttachment responses. CreateAttachment modifies the
change key of the root item of the created attachment. We have to return that new
change key.-->
<xs:complexType name="AttachmentIdType">
<xs:complexContent>
<xs:extension base="t:RequestAttachmentIdType">
<xs:attribute name="RootItemId" type="xs:string" use="optional"/>
<xs:attribute name="RootItemChangeKey" type="xs:string" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- This type is used solely in DeleteAttachment responses. -->
<xs:complexType name="RootItemIdType">
<xs:complexContent>
<xs:extension base="t:BaseItemIdType">
<xs:attribute name="RootItemId" type="xs:string" use="required"/>
<xs:attribute name="RootItemChangeKey" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfRequestAttachmentIdsType">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="AttachmentId" type="t:RequestAttachmentIdType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="AttachmentType">
<xs:sequence>
<xs:element name="AttachmentId" type="t:AttachmentIdType" minOccurs="0" maxOccurs="1"/>
<xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContentType" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContentId" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContentLocation" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ItemAttachmentType">
<xs:complexContent>
<xs:extension base="t:AttachmentType">
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element name="Item" type="t:ItemType"/>
<xs:element name="Message" type="t:MessageType"/>
<xs:element name="CalendarItem" type="t:CalendarItemType"/>
<xs:element name="Contact" type="t:ContactItemType"/>
<xs:element name="MeetingMessage" type="t:MeetingMessageType"/>
<xs:element name="MeetingRequest" type="t:MeetingRequestMessageType"/>
<xs:element name="MeetingResponse" type="t:MeetingResponseMessageType"/>
<xs:element name="MeetingCancellation" type="t:MeetingCancellationMessageType"/>
<xs:element name="Task" type="t:TaskType"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SyncFolderItemsCreateOrUpdateType">
<xs:choice>
<xs:element name="Item" type="t:ItemType"/>
<xs:element name="Message" type="t:MessageType"/>
<xs:element name="CalendarItem" type="t:CalendarItemType"/>
<xs:element name="Contact" type="t:ContactItemType"/>
<xs:element name="DistributionList" type="t:DistributionListType"/>
<xs:element name="MeetingMessage" type="t:MeetingMessageType"/>
<xs:element name="MeetingRequest" type="t:MeetingRequestMessageType"/>
<xs:element name="MeetingResponse" type="t:MeetingResponseMessageType"/>
<xs:element name="MeetingCancellation" type="t:MeetingCancellationMessageType"/>
<xs:element name="Task" type="t:TaskType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="FileAttachmentType">
<xs:complexContent>
<xs:extension base="t:AttachmentType">
<xs:sequence>
<xs:element name="Content" type="xs:base64Binary" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ArrayOfAttachmentsType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="ItemAttachment" type="t:ItemAttachmentType"/>
<xs:element name="FileAttachment" type="t:FileAttachmentType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfAttachmentsType">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="ItemAttachment" type="t:ItemAttachmentType"/>
<xs:element name="FileAttachment" type="t:FileAttachmentType"/>
</xs:choice>
</xs:complexType>
<!-- Sensitivity enumeration -->
<xs:simpleType name="SensitivityChoicesType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Normal" />
<xs:enumeration value="Personal" />
<xs:enumeration value="Private" />
<xs:enumeration value="Confidential" />
</xs:restriction>
</xs:simpleType>
<!-- Importance enumeration -->
<xs:simpleType name="ImportanceChoicesType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Low" />
<xs:enumeration value="Normal" />
<xs:enumeration value="High" />
</xs:restriction>
</xs:simpleType>
<!-- Type of body returned -->
<xs:simpleType name="BodyTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="HTML" />
<xs:enumeration value="Text" />
</xs:restriction>
</xs:simpleType>
<!-- Body content with body type attribute -->
<xs:complexType name="BodyType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="BodyType" type="t:BodyTypeType" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Folder Service types. -->
<!-- Folder Ids -->
<xs:complexType name="BaseFolderIdType" abstract="true">
<xs:annotation>
<xs:documentation>Utility type which should never appear in user documents</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- Folder classes -->
<xs:simpleType name="FolderClassType">
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="DistinguishedFolderIdNameType">
<xs:annotation>
<xs:documentation>URIs for the distinguished folders accessible from a mailbox</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="calendar" />
<xs:enumeration value="contacts" />
<xs:enumeration value="deleteditems" />
<xs:enumeration value="drafts" />
<xs:enumeration value="inbox" />
<xs:enumeration value="journal" />
<xs:enumeration value="notes" />
<xs:enumeration value="outbox" />
<xs:enumeration value="sentitems" />
<xs:enumeration value="tasks" />
<xs:enumeration value="msgfolderroot" />
<xs:enumeration value="root" />
<xs:enumeration value="junkemail" />
<xs:enumeration value="searchfolders" />
<xs:enumeration value="voicemail" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="DistinguishedFolderIdType">
<xs:annotation>
<xs:documentation>Identifier for a distinguished folder</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="t:BaseFolderIdType">
<xs:sequence>
<xs:element name="Mailbox" type="t:EmailAddressType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Id" type="t:DistinguishedFolderIdNameType" use="required" />
<xs:attribute name="ChangeKey" type="xs:string" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="FolderIdType">
<xs:annotation>
<xs:documentation>Identifier for a fully resolved folder</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="t:BaseFolderIdType">
<xs:attribute name="Id" type="xs:string" use="required" />
<xs:attribute name="ChangeKey" type="xs:string" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfBaseFolderIdsType">
<xs:choice maxOccurs="unbounded" minOccurs="1">
<xs:element name="FolderId" type="t:FolderIdType"/>
<xs:element name="DistinguishedFolderId" type="t:DistinguishedFolderIdType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="TargetFolderIdType">
<xs:choice>
<xs:element name="FolderId" type="t:FolderIdType"/>
<xs:element name="DistinguishedFolderId" type="t:DistinguishedFolderIdType"/>
</xs:choice>
</xs:complexType>
<!-- Find Folder/Item/Search supporting types -->
<!-- When returning offset information for FindFolder/FindItem, we need to indicate where we
are in the result set. For the different paging mechanisms we need to indicate this in
different ways. The only common paging types between FindFolder and FindItem are indexed and
fractional.
-->
<xs:attributeGroup name="FindResponsePagingAttributes">
<xs:attribute name="IndexedPagingOffset" type="xs:int" use="optional"/>
<xs:attribute name="NumeratorOffset" type="xs:int" use="optional"/>
<xs:attribute name="AbsoluteDenominator" type="xs:int" use="optional"/>
<xs:attribute name="IncludesLastItemInRange" type="xs:boolean" use="optional"/>
<xs:attribute name="TotalItemsInView" type="xs:int" use="optional"/>
</xs:attributeGroup>
<!-- FindFolder response element for holding the results from a single parent -->
<xs:complexType name="FindFolderParentType">
<xs:sequence>
<xs:element name="Folders" type="t:ArrayOfFoldersType" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="t:FindResponsePagingAttributes"/>
</xs:complexType>
<!-- Basic information in a folder definition -->
<xs:complexType name="BaseFolderType" abstract ="true">
<xs:sequence>
<xs:element name="FolderId" type="t:FolderIdType" minOccurs="0"/>
<xs:element name="ParentFolderId" type="t:FolderIdType" minOccurs="0"/>
<xs:element name="FolderClass" type="xs:string" minOccurs="0"/>
<xs:element name="DisplayName" type="xs:string" minOccurs="0"/>
<xs:element name="TotalCount" type="xs:int" minOccurs="0"/>
<xs:element name="ChildFolderCount" type="xs:int" minOccurs="0"/>
<xs:element name="ExtendedProperty" type="t:ExtendedPropertyType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="ManagedFolderInformation" type="t:ManagedFolderInformationType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- ManagedFolderInformation property type -->
<xs:complexType name="ManagedFolderInformationType">
<xs:annotation>
<xs:documentation>Compound property for Managed Folder related information for Managed Folders.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="CanDelete" type="xs:boolean" minOccurs="0"/>
<xs:element name="CanRenameOrMove" type="xs:boolean" minOccurs="0"/>
<xs:element name="MustDisplayComment" type="xs:boolean" minOccurs="0"/>
<xs:element name="HasQuota" type="xs:boolean" minOccurs="0"/>
<xs:element name="IsManagedFoldersRoot" type="xs:boolean" minOccurs="0"/>
<xs:element name="ManagedFolderId" type="xs:string" minOccurs="0"/>
<xs:element name="Comment" type="xs:string" minOccurs="0"/>
<xs:element name="StorageQuota" type="xs:int" minOccurs="0"/>
<xs:element name="FolderSize" type="xs:int" minOccurs="0"/>
<xs:element name="HomePage" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FolderType">
<xs:complexContent>
<xs:extension base="t:BaseFolderType">
<xs:sequence>
<xs:element name="UnreadCount" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Calendar Folder Type-->
<xs:complexType name="CalendarFolderType">
<xs:complexContent>
<xs:extension base="t:BaseFolderType"/>
</xs:complexContent>
</xs:complexType>
<!-- Contacts Folder Type-->
<xs:complexType name="ContactsFolderType">
<xs:complexContent>
<xs:extension base="t:BaseFolderType"/>
</xs:complexContent>
</xs:complexType>
<!-- Search Folder Type-->
<xs:complexType name="SearchFolderType">
<xs:complexContent>
<xs:extension base="t:FolderType">
<xs:sequence>
<xs:element name="SearchParameters" type="t:SearchParametersType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Tasks Folder Type-->
<xs:complexType name="TasksFolderType">
<xs:complexContent>
<xs:extension base="t:FolderType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfFoldersType">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="Folder" type="t:FolderType"/>
<xs:element name="CalendarFolder" type="t:CalendarFolderType"/>
<xs:element name="ContactsFolder" type="t:ContactsFolderType"/>
<xs:element name="SearchFolder" type="t:SearchFolderType"/>
<xs:element name="TasksFolder" type="t:TasksFolderType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="ArrayOfFoldersType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Folder" type="t:FolderType"/>
<xs:element name="CalendarFolder" type="t:CalendarFolderType"/>
<xs:element name="ContactsFolder" type="t:ContactsFolderType"/>
<xs:element name="SearchFolder" type="t:SearchFolderType"/>
<xs:element name="TasksFolder" type="t:TasksFolderType"/>
</xs:choice>
</xs:complexType>
<!-- Item Service types. -->
<xs:complexType name="BaseItemIdType" abstract="true">
<xs:annotation>
<xs:documentation>Abstract base type for item identifiers. Should never be used in web service calls</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:element name="BaseItemId" type="t:BaseItemIdType" />
<xs:simpleType name="DerivedItemIdType">
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:complexType name="ItemIdType">
<xs:annotation>
<xs:documentation>Identifier for a fully resolved item</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="t:BaseItemIdType">
<xs:attribute name="Id" type="xs:string" use="required" />
<xs:attribute name="ChangeKey" type="xs:string" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfBaseItemIdsType">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="ItemId" type="t:ItemIdType"/>
<xs:element name="OccurrenceItemId" type="t:OccurrenceItemIdType"/>
<xs:element name="RecurringMasterItemId" type="t:RecurringMasterItemIdType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="ArrayOfBaseItemIdsType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="ItemId" type="t:ItemIdType"/>
</xs:choice>
</xs:complexType>
<!-- Item classes -->
<xs:simpleType name="ItemClassType">
<xs:restriction base="xs:string" />
</xs:simpleType>
<!--Reply objects-->
<xs:complexType name="ResponseObjectCoreType" abstract="true">
<xs:annotation>
<xs:documentation>
Internal abstract base type for reply objects.
Should not appear in client code
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="t:MessageType">
<xs:sequence>
<xs:element name="ReferenceItemId" type="t:ItemIdType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ResponseObjectType" abstract="true">
<xs:annotation>
<xs:documentation>Abstract base type for reply objects</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="t:ResponseObjectCoreType">
<xs:attribute name="ObjectName" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of this reply object class as an English string. The client
application is required to translate it if it's running in a different locale
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--The wrapper around all reply object types-->
<xs:complexType name="NonEmptyArrayOfResponseObjectsType">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="AcceptItem" type="t:AcceptItemType"/>
<xs:element name="TentativelyAcceptItem" type="t:TentativelyAcceptItemType"/>
<xs:element name="DeclineItem" type="t:DeclineItemType"/>
<xs:element name="ReplyToItem" type="t:ReplyToItemType" />
<xs:element name="ForwardItem" type="t:ForwardItemType" />
<xs:element name="ReplyAllToItem" type="t:ReplyAllToItemType" />
<xs:element name="CancelCalendarItem" type="t:CancelCalendarItemType" />
<xs:element name="RemoveItem" type="t:RemoveItemType" />
<xs:element name="SuppressReadReceipt" type="t:SuppressReadReceiptType" />
</xs:choice>
</xs:complexType>
<!-- Updating an folder. Represents a set of changes to a single folder -->
<xs:complexType name="FolderChangeType">
<xs:sequence>
<xs:choice>
<xs:element name="FolderId" type="t:FolderIdType" />
<xs:element name="DistinguishedFolderId" type="t:DistinguishedFolderIdType"/>
</xs:choice>
<xs:element name="Updates" type="t:NonEmptyArrayOfFolderChangeDescriptionsType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfFolderChangesType">
<xs:sequence>
<xs:element name="FolderChange" type="t:FolderChangeType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- Generic response to deleting a folder -->
<!-- Some well-known reply objects -->
<xs:complexType name="WellKnownResponseObjectType">
<xs:complexContent>
<xs:restriction base="t:ResponseObjectType">
<xs:sequence>
<xs:element name="ItemClass" type="t:ItemClassType" minOccurs="0" />
<xs:element name="Sensitivity" type="t:SensitivityChoicesType" minOccurs="0" />
<xs:element name="Body" type="t:BodyType" minOccurs="0" />
<xs:element name="Attachments" type="t:NonEmptyArrayOfAttachmentsType" minOccurs="0" />
<xs:element
name="InternetMessageHeaders"
type="t:NonEmptyArrayOfInternetHeadersType"
minOccurs="0" />
<xs:element name="Sender" type="t:SingleRecipientType" minOccurs="0" />
<xs:element name="ToRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="CcRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="BccRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="IsReadReceiptRequested" type="xs:boolean" minOccurs="0" />
<xs:element name="IsDeliveryReceiptRequested" type="xs:boolean" minOccurs="0" />
<xs:element name="ReferenceItemId" type="t:ItemIdType" minOccurs="0" />
</xs:sequence>
<xs:attribute name="ObjectName" type="xs:string" use="prohibited" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- Smart reponses: ReplyToItem, ReplyAllToItem, ForwardItem-->
<xs:complexType name="SmartResponseBaseType">
<xs:complexContent>
<xs:restriction base="t:ResponseObjectType">
<xs:sequence>
<xs:element name="Subject" type="xs:string" minOccurs="0" />
<xs:element name="Body" type="t:BodyType" minOccurs="0" />
<xs:element name="ToRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="CcRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="BccRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="IsReadReceiptRequested" type="xs:boolean" minOccurs="0" />
<xs:element name="IsDeliveryReceiptRequested" type="xs:boolean" minOccurs="0" />
<xs:element name="ReferenceItemId" type="t:ItemIdType" minOccurs="0" />
</xs:sequence>
<xs:attribute name="ObjectName" type="xs:string" use="prohibited" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SmartResponseType">
<xs:complexContent>
<xs:extension base="t:SmartResponseBaseType">
<xs:sequence>
<xs:element name="NewBodyContent" type="t:BodyType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Distinguish the various kinds of responses which differ only in name by making them -->
<!-- have types which all extend the same base types trivially -->
<xs:complexType name="ReplyToItemType">
<xs:complexContent>
<xs:extension base="t:SmartResponseType" />
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ReplyAllToItemType">
<xs:complexContent>
<xs:extension base="t:SmartResponseType" />
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ForwardItemType">
<xs:complexContent>
<xs:extension base="t:SmartResponseType" />
</xs:complexContent>
</xs:complexType>
<xs:complexType name="CancelCalendarItemType">
<xs:complexContent>
<xs:extension base="t:SmartResponseType" />
</xs:complexContent>
</xs:complexType>
<!-- Reference Item response object -->
<xs:complexType name="ReferenceItemResponseType">
<xs:complexContent>
<xs:restriction base="t:ResponseObjectType">
<xs:sequence>
<xs:element name="ReferenceItemId" type="t:ItemIdType" minOccurs="0" />
</xs:sequence>
<xs:attribute name="ObjectName" type="xs:string" use="prohibited" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SuppressReadReceiptType">
<xs:complexContent>
<xs:extension base="t:ReferenceItemResponseType" />
</xs:complexContent>
</xs:complexType>
<!-- FindItem response element for holding the results from a single parent -->
<xs:complexType name="FindItemParentType">
<xs:choice>
<xs:element name="Items" type="t:ArrayOfRealItemsType"/>
<xs:element name="Groups" type="t:ArrayOfGroupedItemsType"/>
</xs:choice>
<xs:attributeGroup ref="t:FindResponsePagingAttributes"/>
</xs:complexType>
<!-- Core contents of an item. -->
<xs:complexType name="ItemType">
<xs:sequence>
<xs:element name="MimeContent" type="t:MimeContentType" minOccurs="0" />
<xs:element name="ItemId" type="t:ItemIdType" minOccurs="0" />
<xs:element name="ParentFolderId" type="t:FolderIdType" minOccurs="0"/>
<xs:element name="ItemClass" type="t:ItemClassType" minOccurs="0" />
<xs:element name="Subject" type="xs:string" minOccurs="0" />
<xs:element name="Sensitivity" type="t:SensitivityChoicesType" minOccurs="0" />
<xs:element name="Body" type="t:BodyType" minOccurs="0" />
<xs:element name="Attachments" type="t:NonEmptyArrayOfAttachmentsType" minOccurs="0" />
<xs:element name="DateTimeReceived" type="xs:dateTime" minOccurs="0" />
<xs:element name="Size" type="xs:int" minOccurs="0" />
<xs:element name="Categories" type="t:ArrayOfStringsType" minOccurs="0" />
<xs:element name="Importance" type="t:ImportanceChoicesType" minOccurs="0" />
<xs:element name="InReplyTo" type="xs:string" minOccurs="0" />
<xs:element name="IsSubmitted" type="xs:boolean" minOccurs="0" />
<xs:element name="IsDraft" type="xs:boolean" minOccurs="0" />
<xs:element name="IsFromMe" type="xs:boolean" minOccurs="0" />
<xs:element name="IsResend" type="xs:boolean" minOccurs="0" />
<xs:element name="IsUnmodified" type="xs:boolean" minOccurs="0" />
<xs:element name="InternetMessageHeaders" type="t:NonEmptyArrayOfInternetHeadersType" minOccurs="0" />
<xs:element name="DateTimeSent" type="xs:dateTime" minOccurs="0" />
<xs:element name="DateTimeCreated" type="xs:dateTime" minOccurs="0" />
<xs:element name="ResponseObjects" type="t:NonEmptyArrayOfResponseObjectsType" minOccurs="0" />
<xs:element name="ReminderDueBy" type="xs:dateTime" minOccurs="0" />
<xs:element name="ReminderIsSet" type="xs:boolean" minOccurs="0" />
<xs:element name="ReminderMinutesBeforeStart" type="t:ReminderMinutesBeforeStartType" minOccurs="0" />
<xs:element name="DisplayCc" type="xs:string" minOccurs="0" />
<xs:element name="DisplayTo" type="xs:string" minOccurs="0" />
<xs:element name="HasAttachments" type="xs:boolean" minOccurs="0"/>
<xs:element name="ExtendedProperty" type="t:ExtendedPropertyType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Culture" type="xs:language" minOccurs ="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfStringsType">
<xs:sequence>
<xs:element name="String" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfRealItemsType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Item" type="t:ItemType"/>
<xs:element name="Message" type="t:MessageType"/>
<xs:element name="CalendarItem" type="t:CalendarItemType"/>
<xs:element name="Contact" type="t:ContactItemType"/>
<xs:element name="DistributionList" type="t:DistributionListType"/>
<xs:element name="MeetingMessage" type="t:MeetingMessageType"/>
<xs:element name="MeetingRequest" type="t:MeetingRequestMessageType"/>
<xs:element name="MeetingResponse" type="t:MeetingResponseMessageType"/>
<xs:element name="MeetingCancellation" type="t:MeetingCancellationMessageType"/>
<xs:element name="Task" type="t:TaskType"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfAllItemsType">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="Item" type="t:ItemType"/>
<xs:element name="Message" type="t:MessageType"/>
<xs:element name="CalendarItem" type="t:CalendarItemType"/>
<xs:element name="Contact" type="t:ContactItemType"/>
<xs:element name="DistributionList" type="t:DistributionListType"/>
<xs:element name="MeetingMessage" type="t:MeetingMessageType"/>
<xs:element name="MeetingRequest" type="t:MeetingRequestMessageType"/>
<xs:element name="MeetingResponse" type="t:MeetingResponseMessageType"/>
<xs:element name="MeetingCancellation" type="t:MeetingCancellationMessageType"/>
<xs:element name="Task" type="t:TaskType"/>
<xs:element name="ReplyToItem" type="t:ReplyToItemType"/>
<xs:element name="ForwardItem" type="t:ForwardItemType"/>
<xs:element name="ReplyAllToItem" type="t:ReplyAllToItemType"/>
<xs:element name="AcceptItem" type="t:AcceptItemType"/>
<xs:element name="TentativelyAcceptItem" type="t:TentativelyAcceptItemType"/>
<xs:element name="DeclineItem" type="t:DeclineItemType"/>
<xs:element name="CancelCalendarItem" type="t:CancelCalendarItemType" />
<xs:element name="RemoveItem" type="t:RemoveItemType" />
<xs:element name="SuppressReadReceipt" type="t:SuppressReadReceiptType" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AcceptItemType">
<xs:complexContent>
<xs:extension base="t:WellKnownResponseObjectType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TentativelyAcceptItemType">
<xs:complexContent>
<xs:extension base="t:WellKnownResponseObjectType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DeclineItemType">
<xs:complexContent>
<xs:extension base="t:WellKnownResponseObjectType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="RemoveItemType">
<xs:complexContent>
<xs:extension base="t:ResponseObjectType"/>
</xs:complexContent>
</xs:complexType>
<!-- Mime content support -->
<xs:complexType name="MimeContentType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="CharacterSet" type="xs:string" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Special items for creating and updating items -->
<xs:simpleType name="MessageDispositionType">
<xs:restriction base="xs:string">
<xs:enumeration value="SaveOnly" />
<xs:enumeration value="SendOnly" />
<xs:enumeration value="SendAndSaveCopy" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CalendarItemCreateOrDeleteOperationType">
<xs:restriction base="xs:string">
<xs:enumeration value="SendToNone" />
<xs:enumeration value="SendOnlyToAll" />
<xs:enumeration value="SendToAllAndSaveCopy" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CalendarItemUpdateOperationType">
<xs:restriction base="xs:string">
<xs:enumeration value="SendToNone" />
<xs:enumeration value="SendOnlyToAll" />
<xs:enumeration value="SendOnlyToChanged" />
<xs:enumeration value="SendToAllAndSaveCopy" />
<xs:enumeration value="SendToChangedAndSaveCopy" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AffectedTaskOccurrencesType">
<xs:restriction base="xs:string">
<xs:enumeration value="AllOccurrences"/>
<xs:enumeration value="SpecifiedOccurrenceOnly"/>
</xs:restriction>
</xs:simpleType>
<!-- - - - - - - - - - - - - - - - - - - -->
<!-- Message type: derived from item -->
<!-- - - - - - - - - - - - - - - - - - - -->
<xs:complexType name="MessageType">
<xs:complexContent>
<xs:extension base="t:ItemType">
<xs:sequence>
<xs:element name="Sender" minOccurs="0" type="t:SingleRecipientType" />
<xs:element name="ToRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="CcRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="BccRecipients" type="t:ArrayOfRecipientsType" minOccurs="0" />
<xs:element name="IsReadReceiptRequested" type="xs:boolean" minOccurs="0" />
<xs:element name="IsDeliveryReceiptRequested" type="xs:boolean" minOccurs="0" />
<xs:element name="ConversationIndex" type="xs:base64Binary" minOccurs="0" />
<xs:element name="ConversationTopic" type="xs:string" minOccurs="0" />
<xs:element name="From" type="t:SingleRecipientType" minOccurs="0" />
<xs:element name="InternetMessageId" type="xs:string" minOccurs="0" />
<xs:element name="IsRead" type="xs:boolean" minOccurs="0" />
<xs:element name="IsResponseRequested" type="xs:boolean" minOccurs="0" />
<xs:element name="References" type="xs:string" minOccurs="0" />
<xs:element name="ReplyTo" type="t:ArrayOfRecipientsType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="TaskStatusType">
<xs:restriction base="xs:string">
<xs:enumeration value="NotStarted" />
<xs:enumeration value="InProgress" />
<xs:enumeration value="Completed" />
<xs:enumeration value="WaitingOnOthers" />
<xs:enumeration value="Deferred" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TaskDelegateStateType">
<xs:restriction base="xs:string">
<xs:enumeration value="NoMatch" />
<xs:enumeration value="OwnNew" />
<xs:enumeration value="Owned" />
<xs:enumeration value="Accepted" />
<xs:enumeration value="Declined" />
<xs:enumeration value="Max" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="TaskType">
<xs:complexContent>
<xs:extension base="t:ItemType">
<xs:sequence>
<xs:element name="ActualWork" type="xs:int" minOccurs="0" />
<xs:element name="AssignedTime" type="xs:dateTime" minOccurs="0" />
<xs:element name="BillingInformation" type="xs:string" minOccurs="0" />
<xs:element name="ChangeCount" type="xs:int" minOccurs="0" />
<xs:element name="Companies" type="t:ArrayOfStringsType" minOccurs="0" />
<xs:element name="CompleteDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="Contacts" type="t:ArrayOfStringsType" minOccurs="0" />
<xs:element name="DelegationState" type="t:TaskDelegateStateType" minOccurs="0" />
<xs:element name="Delegator" type="xs:string" minOccurs="0" />
<xs:element name="DueDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="IsAssignmentEditable" type="xs:int" minOccurs="0" />
<xs:element name="IsComplete" type="xs:boolean" minOccurs="0" />
<xs:element name="IsRecurring" type="xs:boolean" minOccurs="0" />
<xs:element name="IsTeamTask" type="xs:boolean" minOccurs="0" />
<xs:element name="Mileage" type="xs:string" minOccurs="0" />
<xs:element name="Owner" type="xs:string" minOccurs="0" />
<xs:element name="PercentComplete" type="xs:double" minOccurs="0" />
<xs:element name="Recurrence" type="t:TaskRecurrenceType" minOccurs="0" />
<xs:element name="StartDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="Status" type="t:TaskStatusType" minOccurs="0" />
<xs:element name="StatusDescription" type="xs:string" minOccurs="0" />
<xs:element name="TotalWork" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Paging specification -->
<xs:complexType name="BasePagingType" abstract="true">
<xs:attribute name="MaxEntriesReturned" type="xs:int" />
</xs:complexType>
<xs:simpleType name="IndexBasePointType">
<xs:restriction base="xs:string">
<xs:enumeration value="Beginning" />
<xs:enumeration value="End" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="IndexedPageViewType">
<xs:complexContent>
<xs:extension base="t:BasePagingType">
<xs:attribute name="Offset" type="xs:int" use="required"/>
<xs:attribute name="BasePoint" type="t:IndexBasePointType" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="FractionalPageViewType">
<xs:complexContent>
<xs:extension base="t:BasePagingType">
<xs:attribute name="Numerator" type="xs:int" use="required" />
<xs:attribute name="Denominator" type="xs:int" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="CalendarViewType">
<xs:complexContent>
<xs:extension base="t:BasePagingType">
<xs:attribute name="StartDate" type="xs:dateTime" use="required" />
<xs:attribute name="EndDate" type="xs:dateTime" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ContactsViewType">
<xs:complexContent>
<xs:extension base="t:BasePagingType">
<xs:attribute name="InitialName" type="xs:string" />
<xs:attribute name="FinalName" type="xs:string" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Util Service Types. -->
<!-- ANR response -->
<xs:complexType name="ResolutionType">
<xs:sequence>
<xs:element name="Mailbox" type="t:EmailAddressType" />
<xs:element name="Contact" type="t:ContactItemType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfResolutionType">
<xs:sequence>
<xs:element name="Resolution" type="t:ResolutionType" minOccurs="0" maxOccurs="100" />
</xs:sequence>
<xs:attributeGroup ref="t:FindResponsePagingAttributes" />
</xs:complexType>
<!-- DLExpansion response -->
<xs:complexType name="ArrayOfDLExpansionType">
<xs:sequence>
<xs:element name="Mailbox" type="t:EmailAddressType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attributeGroup ref="t:FindResponsePagingAttributes" />
</xs:complexType>
<!-- end of DLExpansion -->
<!-- MeetingMessage types -->
<xs:simpleType name="MeetingRequestTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="FullUpdate" />
<xs:enumeration value="InformationalUpdate" />
<xs:enumeration value="NewMeetingRequest" />
<xs:enumeration value="Outdated" />
<xs:enumeration value="SilentUpdate" />
</xs:restriction>
</xs:simpleType>
<!-- CalendarItem Types -->
<xs:simpleType name="ReminderMinutesBeforeStartType">
<xs:union>
<xs:simpleType id="ReminderMinutesBeforeStartType" >
<xs:restriction base="xs:int">
<xs:minInclusive value="0" />
<xs:maxInclusive value="2629800" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType id="ReminderMinutesBeforeStartMarkerType">
<xs:restriction base="xs:int">
<xs:minInclusive value="1525252321" />
<xs:maxInclusive value="1525252321" />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<!-- Enumeration types -->
<xs:simpleType name="LegacyFreeBusyType">
<xs:restriction base="xs:string">
<xs:enumeration value="Free" />
<xs:enumeration value="Tentative" />
<xs:enumeration value="Busy" />
<xs:enumeration value="OOF" />
<xs:enumeration value="NoData" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CalendarItemTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="Single" />
<xs:enumeration value="Occurrence" />
<xs:enumeration value="Exception" />
<xs:enumeration value="RecurringMaster" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ResponseTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="Unknown" />
<xs:enumeration value="Organizer" />
<xs:enumeration value="Tentative" />
<xs:enumeration value="Accept" />
<xs:enumeration value="Decline" />
<xs:enumeration value="NoResponseReceived" />
</xs:restriction>
</xs:simpleType>
<!-- Representation of attendees -->
<xs:complexType name="AttendeeType">
<xs:sequence>
<xs:element name="Mailbox" type="t:EmailAddressType" />
<xs:element name="ResponseType" type="t:ResponseTypeType" minOccurs="0" />
<xs:element name="LastResponseTime" type="xs:dateTime" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfAttendeesType">
<xs:sequence>
<xs:element name="Attendee" type="t:AttendeeType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- Special item ids for interconverting between instances and masters -->
<xs:complexType name="OccurrenceItemIdType">
<xs:complexContent>
<xs:extension base="t:BaseItemIdType">
<xs:attribute name="RecurringMasterId" type="t:DerivedItemIdType" use="required" />
<xs:attribute name="ChangeKey" type="xs:string" use="optional" />
<xs:attribute name="InstanceIndex" type="xs:int" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="RecurringMasterItemIdType">
<xs:complexContent>
<xs:extension base="t:BaseItemIdType">
<xs:attribute name="OccurrenceId" type="t:DerivedItemIdType" use="required" />
<xs:attribute name="ChangeKey" type="xs:string" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Days of the week and months-->
<xs:simpleType name="DayOfWeekType">
<xs:restriction base="xs:string">
<xs:enumeration value="Sunday" />
<xs:enumeration value="Monday" />
<xs:enumeration value="Tuesday" />
<xs:enumeration value="Wednesday" />
<xs:enumeration value="Thursday" />
<xs:enumeration value="Friday" />
<xs:enumeration value="Saturday" />
<xs:enumeration value="Day" />
<xs:enumeration value="Weekday" />
<xs:enumeration value="WeekendDay" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DaysOfWeekType">
<xs:list itemType="t:DayOfWeekType" />
</xs:simpleType>
<xs:simpleType name="DayOfWeekIndexType">
<xs:restriction base="xs:string">
<xs:enumeration value="First" />
<xs:enumeration value="Second" />
<xs:enumeration value="Third" />
<xs:enumeration value="Fourth" />
<xs:enumeration value="Last" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MonthNamesType">
<xs:restriction base="xs:string">
<xs:enumeration value="January" />
<xs:enumeration value="February" />
<xs:enumeration value="March" />
<xs:enumeration value="April" />
<xs:enumeration value="May" />
<xs:enumeration value="June" />
<xs:enumeration value="July" />
<xs:enumeration value="August" />
<xs:enumeration value="September" />
<xs:enumeration value="October" />
<xs:enumeration value="November" />
<xs:enumeration value="December" />
</xs:restriction>
</xs:simpleType>
<!-- Recurrence pattern types -->
<xs:complexType name="RecurrencePatternBaseType" abstract="true" />
<xs:complexType name="IntervalRecurrencePatternBaseType" abstract="true">
<xs:complexContent>
<xs:extension base="t:RecurrencePatternBaseType">
<xs:sequence>
<xs:element name="Interval" type="xs:int" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--
Base regeneration pattern type for tasks.
-->
<xs:complexType name="RegeneratingPatternBaseType" abstract="true">
<xs:complexContent>
<xs:extension base="t:IntervalRecurrencePatternBaseType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DailyRegeneratingPatternType">
<xs:complexContent>
<xs:extension base="t:RegeneratingPatternBaseType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="WeeklyRegeneratingPatternType">
<xs:complexContent>
<xs:extension base="t:RegeneratingPatternBaseType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MonthlyRegeneratingPatternType">
<xs:complexContent>
<xs:extension base="t:RegeneratingPatternBaseType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="YearlyRegeneratingPatternType">
<xs:complexContent>
<xs:extension base="t:RegeneratingPatternBaseType"/>
</xs:complexContent>
</xs:complexType>
<!-- Realizable Recurrence pattern types -->
<xs:complexType name="RelativeYearlyRecurrencePatternType">
<xs:complexContent>
<xs:extension base="t:RecurrencePatternBaseType">
<xs:sequence>
<xs:element name="DaysOfWeek" type="t:DayOfWeekType" />
<xs:element name="DayOfWeekIndex" type="t:DayOfWeekIndexType" />
<xs:element name="Month" type="t:MonthNamesType" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AbsoluteYearlyRecurrencePatternType">
<xs:complexContent>
<xs:extension base="t:RecurrencePatternBaseType">
<xs:sequence>
<xs:element name="DayOfMonth" type="xs:int" />
<xs:element name="Month" type="t:MonthNamesType" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="RelativeMonthlyRecurrencePatternType">
<xs:complexContent>
<xs:extension base="t:IntervalRecurrencePatternBaseType">
<xs:sequence>
<xs:element name="DaysOfWeek" type="t:DayOfWeekType" />
<xs:element name="DayOfWeekIndex" type="t:DayOfWeekIndexType" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AbsoluteMonthlyRecurrencePatternType">
<xs:complexContent>
<xs:extension base="t:IntervalRecurrencePatternBaseType">
<xs:sequence>
<xs:element name="DayOfMonth" type="xs:int" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="WeeklyRecurrencePatternType">
<xs:complexContent>
<xs:extension base="t:IntervalRecurrencePatternBaseType">
<xs:sequence>
<xs:element name="DaysOfWeek" type="t:DaysOfWeekType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DailyRecurrencePatternType">
<xs:complexContent>
<xs:extension base="t:IntervalRecurrencePatternBaseType" />
</xs:complexContent>
</xs:complexType>
<!-- Description of a time zone -->
<xs:group name="TimeChangePatternTypes">
<xs:sequence>
<xs:choice>
<xs:element name="RelativeYearlyRecurrence" type="t:RelativeYearlyRecurrencePatternType" />
<xs:element name="AbsoluteDate" type="xs:date" />
</xs:choice>
</xs:sequence>
</xs:group>
<xs:complexType name="TimeChangeType">
<xs:sequence>
<xs:element name="Offset" type="xs:duration" />
<xs:group ref="t:TimeChangePatternTypes" minOccurs="0"/>
<xs:element name="Time" type="xs:time" />
</xs:sequence>
<xs:attribute name="TimeZoneName" type="xs:string" use="optional" />
</xs:complexType>
<xs:complexType name="TimeZoneType">
<xs:sequence>
<xs:element name="BaseOffset" type="xs:duration" />
<xs:sequence minOccurs="0">
<xs:element name="Standard" type="t:TimeChangeType"/>
<xs:element name="Daylight" type="t:TimeChangeType"/>
</xs:sequence>
</xs:sequence>
<xs:attribute name="TimeZoneName" type="xs:string" use="optional" />
</xs:complexType>
<!-- Recurrence range types -->
<xs:complexType name="RecurrenceRangeBaseType" abstract="true">
<xs:sequence>
<xs:element name="StartDate" type="xs:date" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NoEndRecurrenceRangeType">
<xs:complexContent>
<xs:extension base="t:RecurrenceRangeBaseType" />
</xs:complexContent>
</xs:complexType>
<xs:complexType name="EndDateRecurrenceRangeType">
<xs:complexContent>
<xs:extension base="t:RecurrenceRangeBaseType">
<xs:sequence>
<xs:element name="EndDate" type="xs:date" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NumberedRecurrenceRangeType">
<xs:complexContent>
<xs:extension base="t:RecurrenceRangeBaseType">
<xs:sequence>
<xs:element name="NumberOfOccurrences" type="xs:int" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- The real Recurrence type -->
<xs:group name="RecurrencePatternTypes">
<xs:sequence>
<xs:choice>
<xs:element name="RelativeYearlyRecurrence" type="t:RelativeYearlyRecurrencePatternType" />
<xs:element name="AbsoluteYearlyRecurrence" type="t:AbsoluteYearlyRecurrencePatternType" />
<xs:element name="RelativeMonthlyRecurrence" type="t:RelativeMonthlyRecurrencePatternType" />
<xs:element name="AbsoluteMonthlyRecurrence" type="t:AbsoluteMonthlyRecurrencePatternType" />
<xs:element name="WeeklyRecurrence" type="t:WeeklyRecurrencePatternType" />
<xs:element name="DailyRecurrence" type="t:DailyRecurrencePatternType" />
</xs:choice>
</xs:sequence>
</xs:group>
<xs:group name="TaskRecurrencePatternTypes">
<xs:sequence>
<xs:choice>
<xs:element name="RelativeYearlyRecurrence" type="t:RelativeYearlyRecurrencePatternType"/>
<xs:element name="AbsoluteYearlyRecurrence" type="t:AbsoluteYearlyRecurrencePatternType"/>
<xs:element name="RelativeMonthlyRecurrence" type="t:RelativeMonthlyRecurrencePatternType"/>
<xs:element name="AbsoluteMonthlyRecurrence" type="t:AbsoluteMonthlyRecurrencePatternType"/>
<xs:element name="WeeklyRecurrence" type="t:WeeklyRecurrencePatternType"/>
<xs:element name="DailyRecurrence" type="t:DailyRecurrencePatternType"/>
<xs:element name="DailyRegeneration" type="t:DailyRegeneratingPatternType"/>
<xs:element name="WeeklyRegeneration" type="t:WeeklyRegeneratingPatternType"/>
<xs:element name="MonthlyRegeneration" type="t:MonthlyRegeneratingPatternType"/>
<xs:element name="YearlyRegeneration" type="t:YearlyRegeneratingPatternType"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:group name="RecurrenceRangeTypes">
<xs:sequence>
<xs:choice>
<xs:element name="NoEndRecurrence" type="t:NoEndRecurrenceRangeType" />
<xs:element name="EndDateRecurrence" type="t:EndDateRecurrenceRangeType" />
<xs:element name="NumberedRecurrence" type="t:NumberedRecurrenceRangeType" />
</xs:choice>
</xs:sequence>
</xs:group>
<xs:complexType name="RecurrenceType">
<xs:sequence>
<xs:group ref="t:RecurrencePatternTypes" />
<xs:group ref="t:RecurrenceRangeTypes" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="TaskRecurrenceType">
<xs:sequence>
<xs:group ref="t:TaskRecurrencePatternTypes"/>
<xs:group ref="t:RecurrenceRangeTypes"/>
</xs:sequence>
</xs:complexType>
<!-- Individual occurrences of an expanded Recurrence -->
<xs:complexType name="OccurrenceInfoType">
<xs:sequence>
<xs:element name="ItemId" type="t:ItemIdType" />
<xs:element name="Start" type="xs:dateTime" />
<xs:element name="End" type="xs:dateTime" />
<xs:element name="OriginalStart" type="xs:dateTime" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfOccurrenceInfoType">
<xs:sequence>
<xs:element name="Occurrence" type="t:OccurrenceInfoType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="DeletedOccurrenceInfoType">
<xs:sequence>
<xs:element name="Start" type="xs:dateTime" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NonEmptyArrayOfDeletedOccurrencesType">
<xs:sequence>
<xs:element name="DeletedOccurrence" type="t:DeletedOccurrenceInfoType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- The main calendar item from which all others derive -->
<xs:complexType name="CalendarItemType">
<xs:complexContent>
<xs:extension base="t:ItemType">
<xs:sequence>
<!-- Single and Occurrence only -->
<xs:element name="Start" type="xs:dateTime" minOccurs="0" />
<xs:element name="End" type="xs:dateTime" minOccurs="0" />
<!-- Occurrence only -->
<xs:element name="OriginalStart" type="xs:dateTime" minOccurs="0" />
<xs:element name="IsAllDayEvent" type="xs:boolean" minOccurs="0" />
<xs:element name="LegacyFreeBusyStatus" type="t:LegacyFreeBusyType" minOccurs="0" />
<xs:element name="Location" type="xs:string" minOccurs="0" />
<xs:element name="When" type="xs:string" minOccurs="0" />
<xs:element name="IsMeeting" type="xs:boolean" minOccurs="0" />
<xs:element name="IsCancelled" type="xs:boolean" minOccurs="0" />
<xs:element name="IsRecurring" type="xs:boolean" minOccurs="0" />
<xs:element name="MeetingRequestWasSent" type="xs:boolean" minOccurs="0" />
<xs:element name="IsResponseRequested" type="xs:boolean" minOccurs="0" />
<xs:element name="CalendarItemType" type="t:CalendarItemTypeType" minOccurs="0" />
<xs:element name="MyResponseType" type="t:ResponseTypeType" minOccurs="0" />
<xs:element name="Organizer" type="t:SingleRecipientType" minOccurs="0" />
<xs:element name="RequiredAttendees" type="t:NonEmptyArrayOfAttendeesType" minOccurs="0" />
<xs:element name="OptionalAttendees" type="t:NonEmptyArrayOfAttendeesType" minOccurs="0" />
<xs:element name="Resources" type="t:NonEmptyArrayOfAttendeesType" minOccurs="0" />
<!-- Conflicting and adjacent meetings -->
<xs:element name="ConflictingMeetingCount" type="xs:int" minOccurs="0" />
<xs:element name="AdjacentMeetingCount" type="xs:int" minOccurs="0" />
<xs:element name="ConflictingMeetings" type="t:NonEmptyArrayOfAllItemsType" minOccurs="0" />
<xs:element name="AdjacentMeetings" type="t:NonEmptyArrayOfAllItemsType" minOccurs="0" />
<xs:element name="Duration" type="xs:string" minOccurs="0" />
<xs:element name="TimeZone" type="xs:string" minOccurs="0" />
<xs:element name="AppointmentReplyTime" type="xs:dateTime" minOccurs="0" />
<xs:element name="AppointmentSequenceNumber" type="xs:int" minOccurs="0" />
<xs:element name="AppointmentState" type="xs:int" minOccurs="0" />
<!-- Recurrence specific data, only valid if CalendarItemType is RecurringMaster -->
<xs:element name="Recurrence" type="t:RecurrenceType" minOccurs="0" />
<xs:element name="FirstOccurrence" type="t:OccurrenceInfoType" minOccurs="0" />
<xs:element name="LastOccurrence" type="t:OccurrenceInfoType" minOccurs="0" />
<xs:element name="ModifiedOccurrences" type="t:NonEmptyArrayOfOccurrenceInfoType" minOccurs="0" />
<xs:element name="DeletedOccurrences" type="t:NonEmptyArrayOfDeletedOccurrencesType" minOccurs="0" />
<xs:element name="MeetingTimeZone" type="t:TimeZoneType" minOccurs="0"/>
<xs:element name="ConferenceType" type="xs:int" minOccurs="0" />
<xs:element name="AllowNewTimeProposal" type="xs:boolean" minOccurs="0" />
<xs:element name="IsOnlineMeeting" type="xs:boolean" minOccurs="0" />
<xs:element name="MeetingWorkspaceUrl" type="xs:string" minOccurs="0" />
<xs:element name="NetShowUrl" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Getting occurrences from Recurring masters and vice versa -->
<!--Meeting invitation-->
<xs:complexType name="MeetingMessageType">
<xs:complexContent>
<xs:extension base="t:MessageType">
<xs:sequence>
<xs:element name="AssociatedCalendarItemId" type="t:ItemIdType" minOccurs="0"/>
<xs:element name="IsDelegated" type="xs:boolean" minOccurs="0" />
<xs:element name="IsOutOfDate" type="xs:boolean" minOccurs="0" />
<xs:element name="HasBeenProcessed" type="xs:boolean" minOccurs="0" />
<!-- Meeting response related properties -->
<xs:element name="ResponseType" type="t:ResponseTypeType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MeetingRequestMessageType">
<xs:complexContent>
<xs:extension base="t:MeetingMessageType">
<xs:sequence>
<!--- MeetingRequest properties -->
<xs:element name="MeetingRequestType" type="t:MeetingRequestTypeType" minOccurs="0" />
<xs:element name="IntendedFreeBusyStatus" type="t:LegacyFreeBusyType" minOccurs="0" />
<!-- Calendar Properties of the associated meeting request -->
<!-- Single and Occurrence only -->
<xs:element name="Start" type="xs:dateTime" minOccurs="0" />
<xs:element name="End" type="xs:dateTime" minOccurs="0" />
<!-- Occurrence only -->
<xs:element name="OriginalStart" type="xs:dateTime" minOccurs="0" />
<xs:element name="IsAllDayEvent" type="xs:boolean" minOccurs="0" />
<xs:element name="LegacyFreeBusyStatus" type="t:LegacyFreeBusyType" minOccurs="0" />
<xs:element name="Location" type="xs:string" minOccurs="0" />
<xs:element name="When" type="xs:string" minOccurs="0" />
<xs:element name="IsMeeting" type="xs:boolean" minOccurs="0" />
<xs:element name="IsCancelled" type="xs:boolean" minOccurs="0" />
<xs:element name="IsRecurring" type="xs:boolean" minOccurs="0" />
<xs:element name="MeetingRequestWasSent" type="xs:boolean" minOccurs="0" />
<xs:element name="CalendarItemType" type="t:CalendarItemTypeType" minOccurs="0" />
<xs:element name="MyResponseType" type="t:ResponseTypeType" minOccurs="0" />
<xs:element name="Organizer" type="t:SingleRecipientType" minOccurs="0" />
<xs:element name="RequiredAttendees" type="t:NonEmptyArrayOfAttendeesType" minOccurs="0" />
<xs:element name="OptionalAttendees" type="t:NonEmptyArrayOfAttendeesType" minOccurs="0" />
<xs:element name="Resources" type="t:NonEmptyArrayOfAttendeesType" minOccurs="0" />
<!-- Conflicting and adjacent meetings -->
<xs:element name="ConflictingMeetingCount" type="xs:int" minOccurs="0" />
<xs:element name="AdjacentMeetingCount" type="xs:int" minOccurs="0" />
<xs:element name="ConflictingMeetings" type="t:NonEmptyArrayOfAllItemsType" minOccurs="0" />
<xs:element name="AdjacentMeetings" type="t:NonEmptyArrayOfAllItemsType" minOccurs="0" />
<xs:element name="Duration" type="xs:string" minOccurs="0" />
<xs:element name="TimeZone" type="xs:string" minOccurs="0" />
<xs:element name="AppointmentReplyTime" type="xs:dateTime" minOccurs="0" />
<xs:element name="AppointmentSequenceNumber" type="xs:int" minOccurs="0" />
<xs:element name="AppointmentState" type="xs:int" minOccurs="0" />
<!-- Recurrence specific data, only valid if CalendarItemType is RecurringMaster -->
<xs:element name="Recurrence" type="t:RecurrenceType" minOccurs="0" />
<xs:element name="FirstOccurrence" type="t:OccurrenceInfoType" minOccurs="0" />
<xs:element name="LastOccurrence" type="t:OccurrenceInfoType" minOccurs="0" />
<xs:element name="ModifiedOccurrences" type="t:NonEmptyArrayOfOccurrenceInfoType" minOccurs="0" />
<xs:element name="DeletedOccurrences" type="t:NonEmptyArrayOfDeletedOccurrencesType" minOccurs="0" />
<xs:element name="MeetingTimeZone" type="t:TimeZoneType" minOccurs="0" />
<xs:element name="ConferenceType" type="xs:int" minOccurs="0" />
<xs:element name="AllowNewTimeProposal" type="xs:boolean" minOccurs="0" />
<xs:element name="IsOnlineMeeting" type="xs:boolean" minOccurs="0" />
<xs:element name="MeetingWorkspaceUrl" type="xs:string" minOccurs="0" />
<xs:element name="NetShowUrl" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MeetingResponseMessageType">
<xs:complexContent>
<xs:extension base="t:MeetingMessageType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MeetingCancellationMessageType">
<xs:complexContent>
<xs:extension base="t:MeetingMessageType"/>
</xs:complexContent>
</xs:complexType>
<!-- End of CalendarItem Types -->
<!-- Contacts Types -->
<xs:simpleType name="ImAddressKeyType">
<xs:restriction base="xs:string">
<xs:enumeration value="ImAddress1" />
<xs:enumeration value="ImAddress2" />
<xs:enumeration value="ImAddress3" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="EmailAddressKeyType">
<xs:restriction base="xs:string">
<xs:enumeration value="EmailAddress1" />
<xs:enumeration value="EmailAddress2" />
<xs:enumeration value="EmailAddress3" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PhoneNumberKeyType">
<xs:restriction base="xs:string">
<xs:enumeration value="AssistantPhone" />
<xs:enumeration value="BusinessFax" />
<xs:enumeration value="BusinessPhone" />
<xs:enumeration value="BusinessPhone2" />
<xs:enumeration value="Callback" />
<xs:enumeration value="CarPhone" />
<xs:enumeration value="CompanyMainPhone" />
<xs:enumeration value="HomeFax" />
<xs:enumeration value="HomePhone" />
<xs:enumeration value="HomePhone2" />
<xs:enumeration value="Isdn" />
<xs:enumeration value="MobilePhone" />
<xs:enumeration value="OtherFax" />
<xs:enumeration value="OtherTelephone" />
<xs:enumeration value="Pager" />
<xs:enumeration value="PrimaryPhone" />
<xs:enumeration value="RadioPhone" />
<xs:enumeration value="Telex" />
<xs:enumeration value="TtyTddPhone" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PhysicalAddressIndexType">
<xs:restriction base="xs:string">
<xs:enumeration value="None" />
<xs:enumeration value="Business" />
<xs:enumeration value="Home" />
<xs:enumeration value="Other" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PhysicalAddressKeyType">
<xs:restriction base="xs:string">
<xs:enumeration value="Business" />
<xs:enumeration value="Home" />
<xs:enumeration value="Other" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FileAsMappingType">
<xs:restriction base="xs:string">
<xs:enumeration value="None" />
<xs:enumeration value="LastCommaFirst" />
<xs:enumeration value="FirstSpaceLast" />
<xs:enumeration value="Company" />
<xs:enumeration value="LastCommaFirstCompany" />
<xs:enumeration value="CompanyLastFirst" />
<xs:enumeration value="LastFirst" />
<xs:enumeration value="LastFirstCompany" />
<xs:enumeration value="CompanyLastCommaFirst" />
<xs:enumeration value="LastFirstSuffix" />
<xs:enumeration value="LastSpaceFirstCompany" />
<xs:enumeration value="CompanyLastSpaceFirst" />
<xs:enumeration value="LastSpaceFirst" />
</xs:restriction>
</xs:simpleType>
<!-- Contact source -->
<xs:simpleType name="ContactSourceType">
<xs:restriction base="xs:string">