Référence de l’API REST du service de découverte
S’applique à : Office 365
Notes
Le service de découverte Office 365 et le SDK pour .NET seront obsolètes début 10 janvier 2018, et seront complètement désactivés le 1er novembre 2019. Commencer à utiliser Microsoft Graph pour accéder aux données Office 365 par un seul point de terminaison. Pour plus d’informations, consultez notre annonce.
Utilisation du service Découverte Office 365
Pour interagir avec l’API du service Découverte, envoyez des requêtes HTTP et OData. Le service de découverte permet de trouver les Calendriers, Contacts, Courriers, MesFichiers (pour les points de terminaison OneDrive et OneDrive Entreprise), Notes (pour OneNote), et SiteRacine (pour SharePoint).
ID de ressource pour le service de découverte : ResourceId = https://api.office.com/discovery/
.
Pour obtenir des exemples de code sur l’utilisation de l’API de découverte de service pour rechercher des points de terminaison pour les services auxquels vous accédez à l’aide des API Office 365, consultez API Office 365 : Comment utiliser le service de découverte et Exemple de service de découverte Office 365.
Notes
Le service Découverte fournit uniquement des fonctionnalités pour l’environnement Office 365 Online et ne fonctionne pas pour les déploiements locaux.
Contrôle de version
Voici les versions du service de découverte.
Point de terminaison de l’API du service de découverte | Description |
---|---|
https://api.office.com/discovery/v1.0/me | Prend en charge un seul point de terminaison API par service pour la version publiée des API Office 365. Renvoie OData v4 (https://www.odata.org/documentation/odata-version-4-0/) par défaut. |
https://api.office.com/discovery/v2.0/me | Prend en charge plusieurs points de terminaison API par service pour la version publiée des API Office 365. Renvoie OData v4 (https://www.odata.org/documentation/odata-version-4-0/) par défaut. |
Opérations du service de découverte
Connexion initiale
Amène le client à une page web où l’utilisateur entre les informations de compte. Elle renvoie les points de terminaison nécessaires pour poursuivre le Service de découverte. Elle est utilisée la première fois qu’un utilisateur essaie votre application.
Elle indique à votre application :
- À quel cloud appartient l’utilisateur
- Où l’application peut envoyer l’utilisateur pour qu'il se connecte
- Où aller pour obtenir un jeton
Paramètre | Type | Description |
---|---|---|
scope |
chaîne | Une liste délimitée par des espaces de jetons capability.operation. Cette étendue est dans les conditions d’Office 365. Exemple : MyFiles.Write ou Mail.Read |
redirect_uri |
chaîne | URI vers laquelle rediriger après la fin de l’autorisation. Exemple : https://contoso.com/continue |
lcid |
chaîne | Facultatif. Un LCID décimal pour localiser l’interface utilisateur HRD de l’e-mail. Exemple : 1031 Remarque Volontairement, cette API n’accepte pas l’e-mail de l’utilisateur, car cela pourrait compromettre la confidentialité de l’utilisateur en envoyant son e-mail hors du domaine en cours. |
Réponse | Description |
---|---|
302 Found |
Le corps de la réponse contient des valeurs concernant l’application et l’utilisateur |
Élément de corps de réponse | Description |
---|---|
Localisation : redirect_URI | URI vers laquelle rediriger après la fin de l’autorisation. |
?user_email=... | Adresse e-mail que l’utilisateur a saisie. |
&account_type=... | 1 - Compte Microsoft (Live) 2 - Compte organisationnel (Office 365) |
&authorization_service=... | URL du point de terminaison où le client peut obtenir un code d’autorisation. |
&token_service=... | URL du point de terminaison où le client peut échanger un code d’autorisation pour un jeton d’accès et un jeton d’actualisation. |
&scope=... | L’étendue d’origine traduite pour le domaine cible. Les clients ont uniquement besoin de connaître les conditions d’étendue d’Office 365. Si le domaine cible est Live, l’étendue Office 365 d’origine est traduite en conditions Live. |
&unsupported_scope=... | S’il existe des éléments d’étendue qui ne peuvent pas être traduits, ils sont compilés dans unsupported_scope sans modification. Ceci est nécessaire car chaque service d’autorisation ne comprend la portée que dans ses propres conditions. Comme que le service d’autorisation Office 365 n’accepte pas de paramètre d’étendue, à la fois « scope » et « unsupported_scope » sont renvoyés vides. |
&discovery_service=... | URL du point de terminaison où le client peut découvrir les services cibles. |
&discovery_resource=... | Identification de ressource du service de découverte. Elle doit être transmise au service de jeton dans le cadre de la demande de jeton pour le service de découverte. |
Notes
Toutes ces informations sont statiques pour ce compte d’utilisateur. Par conséquent, les clients doivent les mettre en cache puis les réutiliser pour éviter d'agacer l’utilisateur avec une interface utilisateur inutile.
Exemple
var firstSignInUri = new Uri(string.Format("https://api.office.com/discovery/v1.0/me/FirstSignIn?redirect_uri={0}&scope={1}", TerminalUriText, Scope));
var terminalUri = new Uri(TerminalUriText);
//Starting authorization
var webAuthResult = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, firstSignInUri, terminalUri)
.AsTask().ConfigureAwait(continueOnCapturedContext: true);
//Authorization finished
If (webAuthResult.ResponseStatus == WebAuthenticationStatus.Success)
{
var userEmail = MyExtractParamter("user_email",webAuthResult.ResponseData);
var accountType = MyExtractParamter("account_type",webAuthResult.ResponseData);
var authorizationService = MyExtractParamter("authorization_service",webAuthResult.ResponseData);
var tokenService = MyExtractParamter("token_service", webAuthResult.ResponseData);
var discoveryService = MyExtractParamter("discovery_service", webAuthResult.ResponseData);
var scope = MyExtractParamter("scope",webAuthResult.ResponseData);
var unsupportedScope = MyExtractParamter("unsupported_scope", webAuthResult.ResponseData);
MyCacheUserInfo(...);
}
Découvrir des services spécifiques
Utilisez l’API /Services pour obtenir le point de terminaison d’un service spécifique.
Headers | Description |
---|---|
Authorization |
Un jeton d’accès obtenu pendant la phase d’autorisation. Exemple : Authorization: BEARER 2YotnFZFEjr1zCsicMWpAA... |
Accept |
Facultatif. Cet en-tête contrôle le format de la charge utile de réponse : Pour Atom : application/atom+xml Pour JSON : application/json;odata=verbose Si cet en-tête est omis, la valeur par défaut est Atom. Exemple : Accept: application/json;odata=verbose |
Paramètres | Type | Description |
---|---|---|
$select |
chaîne | Facultatif. Une liste de propriétés d’objets séparées par des virgules. Le service à projète uniquement les propriétés sélectionnées. Utilisé pour préserver la bande passante en ne téléchargeant pas les propriétés qui ne sont pas utilisées par l’application. Voir https://www.odata.org/docs/. Exemple : Capability,ServiceUri |
$filter |
chaîne | Facultatif. Prédicat OData qui filtre le jeu de résultats d’origine. Utilisé pour préserver la bande passante en ne téléchargeant pas les instances d’objets qui ne sont pas utilisées par l’application. Voir https://www.odata.org sous l’onglet Documentation pour les fonctions de prédicat disponibles. |
Réponse | Signification | Description |
---|---|---|
200 |
OK | Le corps de la réponse contient une liste d’entrées ServiceInfo schema projetées, filtrées et codées en fonction de la demande OData. Voir la définition du schéma ServiceInfo schema. |
Exemple
var url = string.Format("https://api.office.com/discovery/v1.0/me/services", discoveryService);
var request = HttpWebRequest.CreateHttp(url);
request.Method = "GET";
request.Headers["Authorization"] = "Bearer " + accessToken;
var response = await request.GetResponseAsync().ConfigureAwait(continueOnCapturedContext: true) as HttpWebResponse;
Découvrir quels services sont détectables
Utilisez l’API /AllServices pour découvrir les fonctionnalités détectables ainsi que les services qui les implémentent. /AllServices accepte les requêtes anonymes et n'exige donc pas un jeton d’accès.
Headers | Description |
---|---|
Accept |
Facultatif. Cet en-tête contrôle le format de la charge utile de réponse : Pour Atom : application/atom+xml Pour JSON : application/json;odata=verbose Si cet en-tête est omis, la valeur par défaut est Atom. Exemple : Accept: application/json;odata=verbose |
Paramètres | Type | Description |
---|---|---|
$select |
chaîne | Facultatif. Liste des propriétés de l’objet séparées par des virgules. Fait que le service n'envoie que les propriétés sélectionnées. Il est utilisé pour conserver la bande passante en ne téléchargeant pas les propriétés qui ne sont pas utilisées par l’application. Voir https://www.odata.org/docs/. Exemple : Capability,ServiceUri |
$filter |
chaîne | Facultatif. Prédicat OData qui filtre le jeu de résultats d’origine. Utilisé pour préserver la bande passante en ne téléchargeant pas les instances d’objets qui ne sont pas utilisées par l’application. Voir https://www.odata.org sous l’onglet Documentation pour les fonctions de prédicat disponibles. |
Réponse | Signification | Description |
---|---|---|
200 |
OK | Le corps de la réponse contient une liste d’entrées ServiceInfo schema projetées, filtrées et codées en fonction de la demande OData. Voir la définition du schéma ServiceInfo schema. |
Exemple
var request = HttpWebRequest.CreateHttp("https://api.office.com/discovery/v1.0/me/services");
request.Method = "GET";
request.Headers["Accept"] = "application/json;odata=verbose";
var response = await request.GetResponseAsync().ConfigureAwait(continueOnCapturedContext: true) as HttpWebResponse;
Schéma ServiceInfo
L’API /services et l’API /allservices utilisent les entrées ServiceInfo dans leur corps de réponse.
Propriété | Type | Exemple |
---|---|---|
capability | Chaîne | MyFiles |
serviceId | Chaîne | |
serviceName | Chaîne | O365_SHAREPOINT |
serviceEndpointUri | Chaîne | https://contoso-my.sharepoint.com/personal/alexd_contoso_com |
serviceResourceId | Chaîne | https://contoso-my.sharepoint.com |