You are previewing Inside Microsoft® Exchange Server 2007 Web Services.
O'Reilly logo
Inside Microsoft® Exchange Server 2007 Web Services

Book Description

Dive deep into the architecture of Exchange Web Servicesand master the intricacies for accessing data with the new, unifying API. Exchange Web Services offers new functionality, replacing old, disparate APIs. This practical guide introduces developers to Exchange Web Services. It includes comprehensive, in-depth coverage of the architecture and key features, including messaging, folders, calendaring, tasks, notifications, searching, availability, and autodiscovery. Developers who are moving applications using previous APIs to Exchange Web Services will learn how to determine the correct web services constructsand the implications of those decisions. This book assumes only knowledge of how to write HTTP requests, but it provides proxy examples in Microsoft Visual C#.

Table of Contents

  1. Inside Microsoft® Exchange Server 2007 Web Services
    1. SPECIAL OFFER: Upgrade this ebook with O’Reilly
    2. Acknowledgments
      1. From David
      2. From Ben
      3. From Michael
      4. From Mark
    3. Introduction
      1. What Does This Book Cover?
        1. Part I: The Basics
        2. Part II: Things in Your Mailbox
        3. Part III: Searching
        4. Part IV: Keeping You in the Loop
        5. Part V: Advanced Topics
      2. Who Is This Book For?
      3. Companion Web Site
      4. System Requirements
      5. Support for This Book
        1. Questions and Comments
    4. I. The Basics
      1. 1. Welcome to Exchange Web Services
        1. What Is Exchange Web Services?
          1. What Does It Cover?
          2. What Features Are Missing?
          3. Which APIs Is It Meant to Replace?
          4. How Do You Talk to Exchange Web Services?
        2. Development Environment
          1. Generating the Proxy in Visual Studio 2005
            1. STEP 1: Create a New Class Library Project
            2. STEP 2: Add a Web Reference to Your Project
            3. STEP 3: Compile the Library
          2. Generating Proxies by Using wsdl.exe
            1. Creating a Class Library
        3. Schema Files
          1. Messages.xsd
          2. Types.xsd
          3. Schema, Meet Proxy
            1. Choice Elements
            2. *Specified Flags
            3. Only Default Constructors
            4. Name Mangling on enum Values
            5. Array Length Restrictions Lost
            6. Some Simple Type Restrictions Lost
            7. Certain Reference Type Elements Are No Longer Required
        4. Coding by Using Raw XML
        5. Summary
      2. 2. May I See Your Id?
        1. Accessing Your Own Mailbox
        2. Exchange Web Services Indentifiers
          1. Folder Ids
            1. Distinguished Folder Ids
            2. Fear the DisplayName
            3. Normal Folder Ids
          2. Item Ids
          3. Attachment Ids
          4. Id Caching
        3. Delegate Access
          1. Primary SMTP Addresses
        4. Culture and Your Mailbox
          1. Client Cultures versus Server Cultures
        5. Summary
      3. 3. Property Paths and Response Shapes
        1. An Item by Any Other Name
        2. In Exchange Web Services, Properties Are King
          1. Unindexed Property Paths
          2. Indexed Property Paths
          3. Extended Property Paths
            1. Property Tag
            2. Property Set with Name
            3. Property Set with Dispatch Identifier
          4. Exception Property Paths
        3. Get in Shape
          1. Base Shapes
            1. IdOnly
            2. Default
            3. AllProperties
          2. Item Shapes
            1. BaseShape
            2. IncludeMimeContent
            3. BodyType
            4. AdditionalProperties
          3. Folder Shapes
          4. Useful Proxy Class Extensions
        4. Relating Property Paths to Instance Element Names
        5. Change Keys and Shapes
        6. Summary
    5. II. Things in Your Mailbox
      1. 4. Folders
        1. Mailbox Structure
        2. Folder Types
          1. BaseFolderType
            1. FolderClass Property
            2. DisplayName Property
          2. CalendarFolderType
          3. FolderType
          4. ContactsFolderType
          5. SearchFolderType
          6. TasksFolderType
        3. Folder Operations
          1. GetFolder
            1. Dealing with Response Messages
          2. CreateFolder
            1. What Does Your New Folder Look Like?
            2. Creating Strongly Typed Folders
          3. MoveFolder
            1. MoveFolder and Delegate Access
          4. CopyFolder
          5. FindFolder
            1. Traversal
            2. ParentFolderIds
          6. DeleteFolder
            1. DeleteType Attribute
              1. HardDelete
              2. SoftDelete
              3. MoveToDeletedItems
          7. UpdateFolder
            1. SetFolderFieldType
            2. DeleteFolderFieldType
            3. AppendToFolderFieldType
          8. Application Operations for Properties
        4. Managed Folders
          1. Creating Managed Folder Instances in Exchange Web Services
          2. Finding the Managed Folder Root
          3. Updating Managed Folder Information
          4. Deleting Managed Folders
        5. Summary
      2. 5. Items
        1. What Is an Item?
          1. Determining the Type of an Item
        2. Item Operations
          1. GetItem
          2. CreateItem
            1. MessageDisposition Attribute
            2. SendMeetingInvitations Attribute
            3. SavedItemFolderId Element
            4. Items Element
          3. CopyItem
            1. ToFolderId Element
            2. ItemIds Element
          4. MoveItem
          5. DeleteItem
            1. ItemIds Element
            2. DeleteType Attribute
            3. SendMeetingCancellations Attribute
            4. AffectedTaskOccurrences Attribute
          6. FindItem
            1. Traversal Attribute
            2. ItemShape Element
            3. Paging Elements
            4. Grouping Elements
            5. Restriction Element
            6. SortOrder Element
            7. ParentFolderIds Element
            8. Dealing with the FindItem Response
          7. SendItem
          8. UpdateItem
            1. ConflictResolution Attribute
            2. SavedItemFolderId Element
            3. ItemChanges Element
              1. SetItemFieldType
              2. DeleteItemFieldType
              3. AppendItemFieldType
            4. What If You Specify the Wrong Type?
          9. ItemType Properties
            1. ItemType Properties and Shapes
            2. MimeContent Property
              1. Retrieving MIME Content
              2. Creating an Item from MIME
            3. Body Property
            4. Attachments Property
            5. Categories Property
            6. InternetMessageHeaders Property
            7. ResponseObjects Property
            8. Culture Property
        3. Summary
      3. 6. Contacts and Distribution Lists
        1. What Is a Contact?
          1. Store Contacts
          2. Directory Contacts
        2. What Is a Distribution List?
        3. Creating a Contact
        4. Other Common Operations
        5. Contact Properties
          1. FileAs and FileAsMapping
          2. Subject and DisplayName
          3. CompleteName
          4. EmailAddresses
            1. The contacts:EmailAddresses Property Path
            2. Deleting E-Mail Addresses
          5. PhysicalAddresses and PostalAddressIndex
            1. Physical Address Property Paths
          6. PhoneNumbers
            1. Phone Number Property Paths
          7. ImAddresses
          8. Dictionary Property Paths and the Proxy Classes
          9. Children and Companies
          10. ContactSource
        6. Creating a Distribution List
        7. Distribution List Properties
        8. Finding Store Contacts and Distribution Lists
        9. ResolveNames
          1. UnresolvedEntry Element
            1. Resolving Directory Contacts
            2. Resolving Store Contacts
          2. Dealing with the Response
          3. ReturnFullContactData Attribute
        10. ExpandDL
          1. Expanding Store (Private) Distribution Lists
          2. Expanding Directory (Public) Distribution Lists
          3. A Proxy Class Example
        11. Summary
      4. 7. Messages
        1. What Exactly Is a Message?
        2. What Exactly Is a Recipient?
          1. Recipient Addresses
            1. The EmailAddressType
              1. The Name element
              2. The EmailAddress and RoutingType elements
        3. The Disposition of a Message
        4. Message Properties
          1. Recipient Collection Properties
            1. Updating the Recipient Collection Properties
            2. Retrieving the Recipient Collection Properties
          2. IsRead Property
          3. Creating and Suppressing Read Receipts
          4. IsDeliverReceiptRequested Property
          5. ReplyTo Property
          6. From and Sender Properties
        5. Message Flags
        6. Sending Messages
          1. The SendItem Web Method
            1. ItemIds Element
            2. SavedItemFolderId and SaveItemToFolder
          2. Resending Messages
          3. Sending to a Store Distribution List
        7. Replying To and Forwarding Messages
          1. ReferenceItemId Property
          2. Body and NewBodyContent Properties
          3. The Missing Properties on Response Objects
          4. Response Object Applicability
        8. Reports
        9. Summary
      5. 8. Working with Calendars
        1. Making the Complex Understandable
        2. Creating Your First Calendar Item
        3. Understanding Calendar Items
          1. Introducing Recurrences
          2. Introducing Meetings
          3. Introducing Free/Busy Status
          4. CalendarItemType Properties
            1. The Start and End Properties
            2. The Location Property
            3. The CalendarItemType Property
            4. The ResponseObjects Property
            5. The LegacyFreeBusyStatus Property
            6. The Duration Property
            7. The IsCancelled Property
            8. The IsRecurring Property
            9. The IsAllDayEvent Property
            10. The TimeZone Property
            11. The MeetingTimeZone Property
        4. Getting Adjacent and Conflicting Calendar Items
          1. The AdjacentMeetingCount and ConflictingMeetingCount Properties
          2. The AdjacentMeetings and ConflictingMeetings Properties
        5. Working with Date/Time Strings
          1. Understanding Offsets in Date/Time Strings
          2. Exchange Web Services Rules Governing Date/Time String Conversion
          3. Working with DateTime Structures in the Proxy Classes
        6. Working with Duration Strings
          1. Getting a System.TimeSpan Object from a Duration Property
          2. Working with TimeSpan Structures and the BaseOffset Property
        7. Applying Best Practices to New CalendarItem Instances with the Proxy Classes
        8. Viewing Items on a Calendar
          1. Understanding the TotalCount Property on Calendar Folders
          2. Introducing the CalendarViewType Type
            1. Using a Calendar View with the Proxy Classes
            2. CalendarViews and Custom AppointmentTypes
        9. Summary
      6. 9. Recurring Appointments and Time Zones
        1. Understanding Recurrences
          1. Mastering the Occurrence Relationship
            1. Getting the Recurring Master of a Series from an Occurrence Id
          2. Understanding How Occurrences and Exceptions Are Indexed
            1. Finding an Occurrence or Exception by Index
          3. Special References to Items in a Recurring Series
            1. FirstOccurrence Property
            2. LastOccurrence Property
            3. ModifiedOccurrences Property
            4. DeletedOccurrences Property
            5. Example of the Recurring Series Special Reference Properties
        2. Creating a Recurring Series
          1. Setting the Properties of the RecurrenceType Type in Proxy
          2. Understanding Recurrence Patterns
          3. Fixed Interval Recurrence Pattern Types
            1. Absolute Yearly Recurrence Pattern
            2. Relative Yearly Recurrence Pattern
          4. Variable Interval Recurrence Pattern Types
            1. Absolute Monthly Recurrence Pattern
            2. Relative Monthly Recurrence Pattern
            3. Weekly Recurrence Pattern
            4. Daily Recurrence Pattern
            5. Summarizing the Use of the Interval Property
          5. Understanding Recurrence Ranges
            1. Notes on Recurrence Ranges
        3. Updating a Recurring Series
          1. Notes on Using Change Keys in a Recurring Series
        4. Working with Time Zones
          1. Understanding the MeetingTimeZone Element
            1. TimeZoneName Attribute of the TimeZoneType Type
            2. Standard and Daylight Properties
            3. Offset Element of TimeChangeType Type
            4. Time Element of the TimeChangeType
            5. TimeZoneName Attribute of TimeChangeType Type
            6. Time Change Patterns in the MeetingTimeZone Element
          2. Using the MeetingTimeZone to Set a Time Zone with Time Changes on a Calendar Item
          3. Updating MeetingTimeZone
          4. Understanding xs:time XML Serialization Issues
            1. Overcoming xs:time XML Serialization Issues with IXmlSerializable
          5. Using the MeetingTimeZone Property to Set a Time Zone with Time Changes on a Calendar Item via the Proxy
            1. Notes on Getting Time Zone Definitions from the Windows Registry
        5. Summary
      7. 10. Scheduling Meetings
        1. Creating a Meeting and Inviting Attendees
          1. Creating a Meeting Using the CreateItem Web Method
          2. Creating a Meeting Using the UpdateItem Web Method
          3. Understanding Attendees and Attendee Collections
            1. Modifying an Attendee Collection
            2. Removing Attendees from a Meeting
          4. Forwarding Meetings and Meeting Requests
            1. Meeting Forward Notification Messages
            2. Recognizing a Meeting Request as ‘Sent On Behalf Of’
        2. Working with Meeting Messages
          1. Understanding Meeting Messages
            1. AssociatedCalendarItemId Property
            2. IsDelegated Property
            3. IsOutOfDate Property
            4. HasBeenProcessed Property
            5. ResponseType Property
          2. Understanding Meeting Requests
          3. Properties of a Meeting Request
            1. MeetingRequestType Property
            2. IntendedFreeBusyStatus Property
            3. LegacyFreeBusyStatus Property
            4. MeetingRequestWasSent Property
            5. MyResponseType Property
            6. The RequiredAttendees and OptionalAttendees Properties
          4. Viewing a Meeting Request via the Proxy Classes
        3. Registering a Meeting Response
          1. Understanding the Meeting Registration Response Object Types
            1. ReferenceItemId Property
          2. Accepting a Meeting Request
          3. Declining a Meeting Request
          4. Tentatively Accepting a Meeting Request
          5. Responding to Meetings Using a MeetingMessage Id versus Using a CalendarItem Id
          6. Including Message Content in a Meeting Response
          7. Responding to a Meeting Request via the Proxy Classes
        4. Working with Meeting Responses
          1. Understanding Meeting Response Messages
          2. Tracking Meeting Responses
        5. Cancelling Meetings
          1. Removing a Meeting from the Organizer’s Calendar Using the DeleteItem Web Method
          2. Using CancelCalendarItem to Cancel a Meeting
          3. Understanding Meeting Cancellation Messages
          4. Removing a Cancelled Meeting with the RemoveItem Response Object
        6. Working with Recurring Meetings
          1. Changing a Response to One Occurrence of a Recurring Meeting
          2. Updating the Attendee List for One Occurrence of a Recurring Meeting
        7. Summary
      8. 11. Tasks
        1. Basic Task Operations
        2. Task Properties
          1. Task Delegation and Exchange Web Services
          2. AssignedTime Property
          3. DelegationState Property
          4. Delegator Property
          5. IsAssignmentEditable Property
          6. IsComplete and PercentComplete Properties
          7. IsTeamTask Property
          8. Owner Property
          9. Status and StatusDescription Properties
        3. Task Recurrence
          1. Creating a Recurring Task
            1. What Is a Regenerating Recurrence Pattern?
            2. Regenerating Recurrence Pattern Types
          2. Task Properties and Restrictions
          3. Overdue Regenerating Tasks
          4. Modifying Recurrence Patterns
          5. How Are Recurring Task Instances Related?
        4. Summary
      9. 12. Attachments
        1. What Are Attachments?
          1. Attachments, Property Paths, and Item Shapes
        2. File Attachments
          1. Retrieving Attachment Content
            1. AttachmentShape Element
            2. AttachmentIds Element
          2. Creating File Attachments
          3. Attachment Ids
          4. Deleting File Attachments
          5. Hidden/Inline Attachments
          6. Updating Attachments
          7. Finding Attachments
        3. Item Attachments
          1. Reintroducing the AttachmentShape
          2. Creating an Item Attachment
          3. Deleting Item Attachments
        4. Attachment Hierarchies
        5. Summary
      10. 13. Extended Properties
        1. A Little Background
          1. Property Type
          2. PropTag Ranges
            1. Identifying Extended Properties
        2. Extended Properties in Exchange Web Services
          1. Property Type
          2. Property Tags
          3. Custom Properties by Name
          4. Custom Properties by Id
          5. Extended Property Metadata and Data
          6. Properties with Multiple Values
        3. Using Extended Properties
          1. Specifying Extended Properties in Shapes
          2. Updating Extended Properties
          3. Overriding Exchange Web Services Business Logic
        4. Managed Folders
        5. MAPI Entry Ids
        6. Summary
    6. III. Searching
      1. 14. Searching the Mailbox
        1. Restrictions
        2. Search Expressions
          1. TwoOperandExpressionType
          2. NotType Search Expression
          3. And and Or Filters
          4. Exists Filter
          5. Contains Filter
            1. ContainmentMode Attribute
            2. ContainmentComparison Attribute
          6. Excludes Filter
        3. Special Considerations
          1. Recipient Subfilters
          2. Attachment Subfilters
        4. Summary
      2. 15. Advanced Searching
        1. Paging
          1. Indexed Paging
            1. Forward Navigation
              1. Indexed Paging Using The Proxy
            2. Backward Navigation
          2. Fractional Paging
          3. Paging and Stale Data
        2. Grouped Item Queries
          1. GroupBy Element
            1. Order Attribute
            2. Aggregation
          2. DistinguishedGroupBy Element
          3. Grouped Results and TotalItemsInView
          4. Dealing with the Results
          5. More on the Group Identifier
            1. Grouping by a Property that Doesn’t Exist for an Item
            2. Acceptable Group by Properties
          6. Grouping by Attachments
        3. Search Folders
        4. What Are Search Folders?
        5. How Are Search Folders Created?
          1. SearchParametersType
        6. Retrieving Your Search Folder
        7. Updating Your Search Folder
        8. What Else Can Be Done Once Search Folders Are Created?
        9. Search Folders and the FindItem Operations
        10. The FindItem/SearchFolder Balancing Act
        11. Exchange Web Services Search Folder Quirks
          1. Partial Support for MAPI Restrictions
          2. Subfilters Not Supported for Office Outlook Search Folders
        12. Summary
    7. IV. Keeping You in the Loop
      1. 16. Synchronization
        1. What Is Synchonization?
        2. Syncing the Folder Hierarchy
          1. FolderShape Element
          2. SyncState Element
          3. Notable Omissions
          4. SyncFolderHierarchy Responses
          5. IncludesLastFolderInRange Element
          6. Changes Element
            1. Create Change Entries
            2. Update Change Entries
            3. Delete Change Entries
          7. The "Other" Delete
          8. Moving and Copying Folders
          9. Dealing with the Response
        3. Syncing Items Within a Folder
          1. ItemShape Element
          2. SyncFolderId Element
          3. SyncState Element
          4. Ignore Element
          5. MaxChangesReturned Element
          6. SyncFolderItems Responses
            1. Changes Element
              1. Create and Update Change Entries
              2. Delete Change Entries
            2. SyncFolderItems Responses and the Proxy Classes
          7. Syncing Items Outside of the IPM Subtree
        4. Summary
      2. 17. Notification
        1. What Is a Notification?
        2. How Do Sync and Notification Differ?
          1. Weight
          2. Folders versus Items
          3. Server versus Client Held State
          4. Information Richness
          5. Control Over Information Received
          6. Other Mailboxes
        3. Pull Notifications
          1. Creating a Pull Notification Subscription
            1. The FolderIds Element
            2. The Timeout Element
            3. SubscriptionId and Watermark Response Elements
            4. Using the Proxy Classes
          2. Re-Creating a Subscription
          3. Retrieving and Interpreting Events
            1. SubscriptionId and PreviousWatermark Elements in Response
            2. MoreEvents Element in Response
            3. Watermark Element in Response
            4. ItemId or FolderId in Response
            5. Timestamp Element in Response
            6. ParentFolderId Element in Response
            7. StatusEvent
            8. CreatedEvent, DeletedEvent, and NewMailEvent
            9. CopiedEvent and MovedEvent
            10. ModifiedEvent
            11. Using the Proxy Classes
          4. Unsubscribing
        4. Push Notifications
          1. Creating a Push Notification Subscription
            1. StatusFrequency Element in Request
            2. URL Element in Request
            3. Push Subscription Lifetime
            4. Using the Proxy Classes
          2. Push Notification Requests and Responses
            1. MoreEvents Element in SendNotification
            2. Responding to SendNotification
          3. The Art of Listening: The Push Subscription Client
          4. What Happens When Things Go Wrong?
        5. Summary
    8. V. Advanced Topics
      1. 18. Errors Never Happen
        1. SOAP and Batch Processing
        2. The Normal Mechanism
        3. Response Messages
          1. ResponseClass Attribute
          2. MessageText Element
          3. ResponseCode Element
          4. DescriptiveLinkKey Element
          5. MessageXml Element
        4. Errors and the Proxy Classes
        5. HTTP 500 Status Codes
        6. Programming Consistency
          1. The Non-Batched, Exception Approach
          2. The Batched Approach
        7. Batch Stop Processing Errors
        8. Summary
      2. 19. Server to Server Authentication
        1. The Two Hop Problem
          1. The Exchange Two Hop Solution
          2. The Principle of Least Privilege
          3. More Account Control
        2. The Basic Principle
        3. Meet the Cast
          1. The Service Account
          2. The Act As Account
          3. The Mailbox Account
        4. Types of S2S Authentication Requests
          1. Exchange Impersonation
            1. PrincipalName
            2. SID
            3. PrimarySmtpAddress
            4. Using the Proxy Classes
            5. The ms-Exch-EPI-Impersonation Right
            6. The ms-Exch-EPI-May-Impersonate Right
              1. Granting the ms-Exch-EPI-May-Impersonate Right on the User Object
              2. Granting ms-Exch-EPI-May-Impersonate to the Mailbox Database
              3. Resolving Rights Discrepancies
            7. Exchange Impersonation and Cross-Forest Contacts
            8. Looking at the Security Descriptor
          2. Token Serialization
            1. Why Two Formats for S2S Authentication?
              1. Performance
              2. Configuration
              3. Wider-Scoped Privileges
            2. Token Serialization in the Schema
              1. UserSid Element
              2. GroupsSids Element
              3. RestrictedGroupSids Element
              4. PrimarySmtpAddress Element
            3. Creating the SerializedSecurityContext
            4. Token Serialization Right
            5. Oh, How I Trust Thee!
        5. Not All Methods Are Created Equal
        6. Going Back to IPS
        7. Summary
      3. 20. Autodiscover
        1. Talking to Autodiscover
        2. Autodiscover Providers
          1. The Outlook Provider
            1. EMailAddress Element
            2. LegacyDN Element
            3. AcceptableResponseSchema Element
            4. The Outlook Provider Autodiscover Response
              1. The User Element
              2. The Account Element
              3. The EXCH Protocol
              4. The EXPR Protocol
              5. The WEB Protocol
            5. Outlook Provider Redirections
          2. The MobileSync Provider
            1. MobileSync Provider for Autodiscover Response
              1. The Culture Element
              2. The User Element
              3. The Action Element
        3. Incorporating Autodiscover into Your Client Application
        4. Summary
      4. 21. Availability
        1. What Is User Availability?
        2. Understanding the GetUserAvailabilityRequest
        3. Understanding the GetUserAvailabilityResponse
          1. GetUserAvailabilityResponseType
            1. Introducing the FreeBusyResponseArray and FreeBusyView
            2. Introducting the SuggestionsResponse
            3. Checking for Success in a GetUserAvailabilityResponse via the Proxy Classes
        4. Working with TimeZone and MailboxData Properties in a GetUserAvailabilityRequest
          1. TimeZone Element
            1. Bias Element of the SerializableTimeZone
            2. StandardTime and DaylightTime Properties
            3. Bias Element of SerializableTimeZoneTime
            4. Time Element of SerializableTimeZoneTime
            5. The DayOrder, Month, and DayOfWeek Elements of SerializableTimeZoneTime
            6. Comparison of RelativeYearlyRecurrencePatternType and SerializableTimeZoneTime
          2. MailboxDataArray Element
            1. Email Element of MailboxData
            2. AttendeeType
            3. ExcludeConflicts
        5. Working with Free/Busy Information
          1. FreeBusyViewOptions in an Availability Request
          2. FreeBusyViewOptions Elements
            1. TimeWindow
            2. MergedFreeBusyIntervalInMinutes
            3. RequestedView
          3. FreeBusyView in an Availability Response
            1. FreeBusyViewType
            2. MergedFreeBusy
            3. CalendarEventArray and CalendarEvents
            4. CalendarEventDetails
            5. WorkingHours
            6. TimeZone Element of WorkingHours
            7. WorkingPeriodArray and WorkingPeriod
            8. DayOfWeek Element on of WorkingPeriod
            9. StartTimeInMinutes and EndTimeInMinutes
          4. Understanding Time Zone Issues with CalendarEvents
            1. Overcomming Incorrect CalendarEvent Time Values with IXmlSerializable
          5. Getting Free/Busy Information from the Proxy Classes
          6. Getting Free/Busy Information from a Distribution List
        6. Working with Suggestions
          1. SuggestionsViewOptions in an Availability Request
          2. SuggestionsViewOptions Elements
            1. GoodThreshold
            2. MaximumResultsByDay
            3. MaximumNonWorkHourResultsByDay
            4. MeetingDurationInMinutes
            5. MinimumSuggestionQuality
            6. DetailedSuggestionsWindow
            7. CurrentMeetingTime
            8. GlobalObjectId
          3. SuggestionsResponse in an Availability Response
            1. SuggestionDayResult
            2. Date Element of SuggestionDayResult
            3. DayQuality Element
            4. SuggestionArray
          4. Suggestions
            1. MeetingTime Element of Suggestion
            2. IsWorkTime
            3. SuggestionQuality
            4. Attendee Conflict Data
            5. UnknownAttendeeConflictData
            6. IndividualAttendeeConflictData
            7. TooBigGroupAttendeeConflictData
            8. GroupAttendeeConflictData
          5. Understanding Time Zone Issues with Suggestions
            1. Overcoming Incorrect Suggestion MeetingTime Values with IXmlSerializable
          6. Getting Suggestion Information with the Proxy Classes
        7. Summary
      5. 22. Out Of Office Settings
        1. Introducing the SetUserOofSettings Web Method
          1. Mailbox Element in SetUserOofSettingsRequest
          2. UserOofSettings Element in SetUserOofSettingsRequest
            1. OofState Element in UserOofSettings
            2. ExternalAudience Element in UserOofSettings
            3. Duration Element in UserOofSettings
            4. InternalReply and ExternalReply Elements in UserOofSettings
          3. Understanding the SetUserOofSettingsResponse
          4. Setting User OOF Settings via the Proxy Classes
        2. Introducing the GetUserOofSettings Method
          1. Understanding the GetUserOofSettingsResponse
            1. OofState Element in OofSettings
            2. ExternalAudience Element in OofSettings
            3. Duration Element in OofSettings
            4. InternalReply and ExternalReply Elements in OofSettings
            5. AllowExternalOof in GetUserOofSettingsResponse
          2. Getting User OOF Settings via the Proxy Classes
        3. Summary
    9. A. About the Authors
      1. David Sterling
      2. Benjamin Spain
      3. Michael Mainer
      4. Mark Taylor
      5. Huw Upshall
    10. Index
    11. SPECIAL OFFER: Upgrade this ebook with O’Reilly