Update 4 on Office 365 unified API

Office Add-ins team

Hi all, this is the fourth update for Office 365 unified API, we’re announcing another set of breaking changes.  These changes will roll in to the /beta endpoint on 11/9 noon PST.  Here is the list of major changes, along with a full list of ALL changes called out later in the post:

 

1.      With this update all unified API responses will be returned using lowerCamelCasing for all namespaces, entity types, complex types, and property names.  Requests may be case insensitive.

2.      There are a large number of renames (and property removals) in this update, the chief ones being:

a.      A rename of objectId to id on the DirectoryObject entity type.  This impacts a large number of existing entity types as it is a base type for many entity types.

b.      A rename of entity type tenantDetail to organization.

c.      A rename of entity type item to driveItem

3.      The event entity type has a few updates, such as removing the reminder property and replacing with ReminderMinutesBeforeStart and IsReminderOn.  Additionally the start and end properties now become complex types of DateTime and Timezone, with Timezone being required when creating and updating events.  More details can also be found here, and in the examples please , replace “…/api/” in that blog post with “https://graph.microsoft.com/”.

4.      Group permission scopes – Group.Read.All and Group.ReadWrite.All will now require administrators to consent to apps requesting these scopes.  Any apps that have already been consented using these permissions will continue to work. We plan to introduce additional Group permission scopes shortly, that will allow users to consent to apps that need to access Office 365 group content.

5.      Additionally we’re providing a heads-up that at some later time after 11/9,  querying to get the Office 365 groups a user is a member of will be changed. We will likely no longer support the /joinedGroups navigation property.  We will update this post with more information on what the new search syntax will look like.

 

Remember Office 365 unified API is currently in preview, we are working hard to release it soon, as part of this we will continue making some changes, including breaking changes, in /beta to incorporate feedback and improve the API as we get ready for v1.0.  Once v1.0 launches, we will continue to update /beta on a regular basis, even with potentially breaking changes, but versioned end points will not have breaking changes once they’re released.

 

Please continue to provide your feedback and questions via stackoverflow and uservoice. Thank you for your input and happy coding.

 

~ Dan Kershaw and Yina Arenas for the Office 365 unified API team

Full change list details:

The following is a comprehensive list of all the breaking changes that will appear with this update, to the /beta version.

Name Type Breaking Changes
DirectoryObject Entity Type NOTE: A large number entities inherit from DirectoryObject, and will be impacted with the following changes:

  • Renamed property:
    • objectId -> id
  • Removed properties:
    • objectType
    • deletionTimeStamp
OrgContact Entity Type
  • Renamed properties:
    • dirSyncEnabled -> onPremisesSyncEnabled
    • lastDirSyncDateTime -> onPremisesLastSyncDateTime
  • physicalDeliveryOfficeName -> officeLocation
  • mobile -> mobilePhone
  • Removed properties:
    • facsimileTelephoneNumber
    • provisioningErrors
    • sipProxyAddress
    • telephoneNumber
      • NOTE: Added businessPhones (Edm.String collection) to replace telephoneNumber, allowing the developer to store multiple business phone numbers. Any pre-existing telephoneNumber and facsimileTelephoneNumber will be populated into businessPhones.
    • thumbNailPhoto
Device Entity Type
  • Type changed for property:
    • deviceId type changed from Edm.Guid -> Edm.String
  • Renamed properties:
    • approximateLastLogonTimestamp -> approximateLastSignInDateTime
    • deviceObjectVersion -> deviceVersion
    • deviceOSType -> operatingSystem
    • deviceOSVersion -> operatingSystemVersion
    • devicePhysicalIds -> physicalIds
    • deviceTrustType -> trustType
    • dirSyncEnabled -> onPremisesSyncEnabled
    • lastDirSyncDateTime -> onPremisesLastSyncDateTime
DirectoryRole Entity Type
  • Removed Property:
    • isSystem
Event Entity Type
  • Type changed for property:
    • start changed from Edm.DateTime -> complex type DateTimeTimeZone
    • end changed from Edm.DateTime -> complex type DateTimeTimeZone
  • Removed properties:
    • Reminder
      • NOTE: Replaced with reminderMinutesBeforeStart and IsReminderOn
    Group Entity Type
    • Renamed properties:
      • dirSyncEnabled -> onPremisesSyncEnabled
      • companyLastDirSyncDateTime -> onPremisesLastSyncDateTime
    • Removed properties:
      • provisioningErrors
      • isPublic
        • NOTE: Added visibility (Edm.String) to replace isPublic. This property is required to be set when groupTypes is set to [“Unified”]. Allowed values are “public” and “private”.
    TenantDetails Entity Type
    • Entity type itself is renamed to organization
    • Renamed properties:
      • dirSyncEnabled -> onPremisesSyncEnabled
      • lastDirSyncDateTime -> onPremisesLastSyncDateTime
    • Removed properties:
      • provisioningErrors
      • telephoneNumber
        • NOTE: Added businessPhones (Edm.String collection) to replace telephoneNumber, allowing the developer to store multiple business phone numbers. Any pre-existing telephoneNumber will be populated in businessPhones.
    User Entity Type
    • Renamed properties:
      • dirSyncEnabled -> onPremisesSyncEnabled
      • immutableId ->onPremisesImmutableId
      • lastDirSyncDateTime -> onPremisesLastSyncDateTime
      • physicalDeliveryOfficeName -> officeLocation
      • mobile -> mobilePhone
    • Removed properties:
      • facsimileTelephoneNumber
      • provisioningErrors
      • sipProxyAddress
      • otherMails
      • telephoneNumber
        • NOTE: Added businessPhones (Edm.String collection) to replace telephoneNumber, allowing the developer to store multiple business phone numbers. Any pre-existing telephoneNumber and facsimileTelephoneNumber will be populated into businessPhones.
      • thumbNailPhoto
      • rootFolder navigation
      • joinedGroups navigation
        • NOTE: in its place you’ll have to perform the following query instead: ../me/memberOf?$filter=groupTypes eq ‘Unified’
    AssignedPlan Complex Type
    • Renamed Property:
      • forceChangePasswordNextLogin -> forceChangePasswordNextSignIn
    PasswordProfile Complex Type
    • Renamed Property:
      • assignedTimestamp -> assignedDateTime
    SubscribedSku Complex Type
    • Renamed Property:
      • objectId -> id
    VerifiedDomain Complex Type
    • Renamed Property:
      • default -> isDefault
      • Initial -> isInitial
    Photo Complex Type
    • Renamed the complex type to profilePhoto
    Location Complex Type
    • Renamed the complex type to geoCoordinates
      • NOTE: This is used by the location property on the Item entity type
    GeoCoordinates Complex Type
    • Renamed the complex type to outlookGeoCoordinates
      • NOTE: This is used by the coordinates property on the Location complex type
    RecurrenceRange Complex Type
    • Property Type changed
      • StartDate and EndDate types have been changed to Edm.Date
    delta Function
    • Function removed

    Feedback usabilla icon