로그인한 사용자에 대한 작업 | Graph API 참조
적용 대상: Graph API | Azure Active Directory
이 항목에서는 Azure AD(Active Directory) Graph API와 me
별칭을 사용하여 로그인한 사용자에 대한 작업을 수행하는 방법을 설명합니다. Azure AD Graph API를 사용하여 로그인한 사용자의 속성을 읽고 업데이트할 수 있습니다. 로그인한 사용자와 다른 디렉터리 엔터티와의 관계를 쿼리하고 수정할 수도 있습니다. 예를 들어 로그인한 사용자의 관리자를 할당하고, 사용자의 부하 직원을 쿼리하며, 그룹 멤버 자격, 앱 역할 및 사용자에게 할당된 장치를 관리하는 등의 작업을 수행할 수 있습니다.
Graph API는 Azure Active Directory에서 사용자, 그룹, 조직 연락처 및 응용 프로그램 같은 디렉터리 개체에 대한 프로그래밍 방식 액세스를 제공하는 OData 3.0 규격 REST API입니다.
중요
Azure AD Graph API 기능은 단일 액세스 토큰으로 단일 끝점을 통해 모두 액세스되는 Outlook, OneDrive, OneNote, Planner 및 Office Graph와 같은 다른 Microsoft 서비스의 API도 포함하는 통합 API인 Microsoft Graph를 통해서도 사용할 수 있습니다.
로그인한 사용자에 대한 REST 작업 수행
me
별칭을 사용하여, 로그인한 사용자를 대상으로 할 수 있습니다. Graph API를 사용하여 로그인한 사용자에 대한 작업을 수행하려면 로그인한 사용자, 사용자의 탐색 속성 또는 사용자에 대해 호출할 수 있는 함수 또는 동작을 대상으로 하기 위해 me
별칭을 사용하는 끝점에 지원되는 메서드(GET, POST, PATCH, PUT 또는 DELETE)를 사용하여 HTTP 요청을 보냅니다.
Graph API 요청은 다음과 같은 기본 URL을 사용합니다.
https://graph.windows.net/{tenant_id}/{resource_path}?{api_version}[odata_query_parameters]
중요
Graph API에 전송된 요청은 올바른 형식이어야 하고, Graph API의 올바른 끝점 및 버전을 대상으로 하며, Authorization
헤더에 Azure AD에서 가져온 유효한 액세스 토큰을 전달해야 합니다. Graph API를 사용하여 요청을 만들고 응답을 받는 방법에 대한 자세한 내용은 [Operations Overview]를 참조하세요.
me
별칭을 사용하여, 로그인한 사용자를 대상으로 할 수 있습니다. 이 별칭은 요청 URL에서 {tenant id}
및 {resource path}
세그먼트로 바뀝니다. me
별칭을 사용하여 Graph API에 요청을 보낼 경우 요청에 연결된 전달자 토큰에서 테넌트 및 사용자가 파생됩니다. 예를 들어 GET 요청을 https://graph.windows.net/me?api-version=1.6
으로 보내면 로그인한 사용자의 사용자 개체가 반환됩니다.
로그인한 사용자를 대상으로 하는지 아니면 해당 탐색 속성 중 하나를 대상으로 하는지에 따라 URL을 다르게 지정합니다.
me
는 로그인한 사용자를 대상으로 합니다. 이 리소스 경로를 사용하여 사용자의 선언된 속성을 가져오고 수정할 수 있습니다.me/{nav_property}
는 로그인한 사용자의 지정된 탐색 속성을 대상으로 합니다. 이 리소스 경로를 사용하여 사용자의 대상 탐색 속성에서 참조하는 개체를 반환할 수 있습니다. 참고: 이 주소 지정 형식은 읽기에만 사용할 수 있습니다.me/$links/{nav_property}
는 로그인한 사용자의 지정된 탐색 속성을 대상으로 합니다. 이 주소 지정 형식을 사용하여 탐색 속성을 읽고 수정하는 작업을 모두 수행할 수 있습니다. 읽을 때 속성에서 참조하는 개체는 응답 본문에서 하나 이상의 링크로 반환됩니다. 쓸 때 개체는 요청 본문에 하나 이상의 링크로 지정됩니다.
예를 들어 다음 요청은 로그인한 사용자의 관리자에 대한 링크를 반환합니다.
GET https://graph.windows.net/me/$links/manager?api-version=1.6
로그인한 사용자에 대한 기본 작업
me
별칭을 사용하여, 로그인한 사용자를 읽고 해당 선언된 속성을 업데이트할 수 있습니다. 다음 항목에서는 방법을 보여 줍니다.
로그인한 사용자 가져오기
로그인한 사용자를 가져옵니다.
성공할 경우 로그인한 사용자에 대한 [User] 개체를 반환하고, 실패할 경우 응답 본문에 오류 정보가 포함됩니다. 오류에 대한 자세한 내용은 [Error Codes and Error Handling]를 참조하세요.
{
"api": "MeOps",
"operation": "get me",
"showComponents": {
"codeGenerator": "true",
"tryFeature": "true"
}
}
로그인한 사용자 업데이트
로그인한 사용자의 속성을 업데이트합니다. 요청 본문에 쓰기 가능한 [User] 속성을 지정합니다. 지정한 속성만 변경됩니다.
성공할 경우 응답 본문이 반환되지 않고, 실패할 경우 응답 본문에 오류 정보가 포함됩니다. 오류에 대한 자세한 내용은 [Error Codes and Error Handling]를 참조하세요.
{
"api": "MeOps",
"operation": "update me"
}
탐색 속성에 대한 작업
사용자와 디렉터리 내 기타 개체 간의 관계(예: 사용자의 관리자, 직접 그룹 멤버 자격 및 부하 직원)는 탐색 속성을 통해 표시됩니다. me
별칭을 사용할 경우 요청에서 이러한 탐색 속성을 대상으로 하여 이러한 관계를 읽을 수 있으며 경우에 따라 수정할 수도 있습니다.
로그인한 사용자의 관리자(개체) 가져오기
manager 탐색 속성에서 로그인한 사용자의 관리자(개체)를 가져옵니다.
성공할 경우 사용자의 관리자로 할당된 [User] 또는 [Contact]를 반환하고, 실패할 경우 응답 본문에 오류 정보가 포함됩니다. 오류에 대한 자세한 내용은 [Error Codes and Error Handling]를 참조하세요.
사용자에게 할당된 관리자가 없는 경우 404 찾을 수 없음을 반환합니다.
{
"api": "MeOps",
"operation": "get my manager object",
"showComponents": {
"codeGenerator": "true",
"tryFeature": "true"
}
}
로그인한 사용자의 관리자(링크) 가져오기
manager 탐색 속성에서 로그인한 사용자의 관리자 링크를 가져옵니다.
성공할 경우 사용자의 관리자로 할당된 [User] 또는 [Contact]의 링크를 반환하고, 실패할 경우 응답 본문에 오류 정보가 포함됩니다. 오류에 대한 자세한 내용은 [Error Codes and Error Handling]를 참조하세요.
사용자에게 할당된 관리자가 없는 경우 404 찾을 수 없음을 반환합니다.
{
"api": "MeOps",
"operation": "get my manager link",
"showComponents": {
"codeGenerator": "true",
"tryFeature": "true"
}
}
로그인한 사용자의 관리자 업데이트
할당을 통해 로그인한 사용자의 관리자는 manager 속성입니다. 사용자 또는 연락처를 할당할 수 있습니다. 요청 본문은 할당할 [User] 또는 [Contact]의 링크를 포함합니다.
성공할 경우 응답 본문이 반환되지 않고, 실패할 경우 응답 본문에 오류 정보가 포함됩니다. 오류에 대한 자세한 내용은 [Error Codes and Error Handling]를 참조하세요.
{
"api": "MeOps",
"operation": "set my manager"
}
기타 탐색 속성
위에 표시된 것과 동일한 패턴을 사용하여, 사용자에 의해 표시되는 기타 탐색 속성을 대상으로 할 수 있습니다. 일부 속성은 읽기 전용이며 나머지 속성은 수정할 수 있습니다. 사용자 탐색 속성에 대한 자세한 내용은 [User]의 설명서를 참조하세요.
로그인한 사용자에 대한 함수 및 동작
me
별칭을 사용하여, 로그인한 사용자에 대해 다음 함수 또는 동작을 호출할 수 있습니다.
라이선스 할당 및 제거
[assignLicense] 동작을 호출하여 사용자에 대한 라이선스를 할당하거나 제거하고, 사용자에 대해 특정 계획을 사용하거나 사용하지 않도록 설정할 수 있습니다.
로그인한 사용자의 암호 변경
[changePassword] 동작을 호출하여, 로그인한 사용자가 암호를 변경하도록 할 수 있습니다.
그룹 목록의 멤버 자격 확인(전이적)
[checkMemberGroups] 함수를 호출하여 그룹 목록의 멤버 자격을 확인할 수 있습니다. 확인은 전이적으로 수행됩니다.
모든 그룹 멤버 자격 가져오기(전이적)
[getMemberGroups] 함수를 호출하여 사용자가 멤버인 모든 그룹을 반환할 수 있습니다. 확인은 사용자가 직접 멤버인 그룹만 반환하는 memberOf 탐색 속성 읽기와 달리 전이적입니다.
모든 그룹 및 디렉터리 역할 멤버 자격 가져오기(전이적)
getMemberObjects 함수를 호출하여 사용자가 멤버인 모든 그룹 및 디렉터리 역할을 반환할 수 있습니다. 확인은 사용자가 직접 멤버인 그룹만 반환하는 memberOf 탐색 속성 읽기와 달리 전이적입니다.
추가 리소스
- Graph API concepts(Graph API 개념)에서 Graph API에서 지원하는 기능 및 미리 보기 기능에 대해 자세히 알아보기
Basic operations on the signed-in user
GET https://graph.windows.net/me?api-version
Parameter | Type | Value | Notes |
---|---|---|---|
Query | |||
api-version | string | 1.6 | Specifies the version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. |
Response
Status Code:200
Content-Type: application/json
{
{
"odata.metadata": "https://graph.windows.net/myorganization/$metadata#directoryObjects/Microsoft.DirectoryServices.User/@Element",
"odata.type": "Microsoft.DirectoryServices.User",
"objectType": "User",
"objectId": "13addec1-c5ae-47f5-a1fe-202be14b1570",
"deletionTimestamp": null,
"accountEnabled": true,
"signInNames": [],
"assignedLicenses": [
{
"disabledPlans": [],
"skuId": "6fd2c87f-b296-42f0-b197-1e91e994b900"
}
],
"assignedPlans": [
{
"assignedTimestamp": "2014-10-14T02:54:04Z",
"capabilityStatus": "Enabled",
"service": "exchange",
"servicePlanId": "efb87545-963c-4e0d-99df-69c6916d9eb0"
},
{
"assignedTimestamp": "2014-10-14T02:54:04Z",
"capabilityStatus": "Enabled",
"service": "SharePoint",
"servicePlanId": "5dbe027f-2339-4123-9542-606e4d348a72"
},
{
"assignedTimestamp": "2014-10-14T02:54:04Z",
"capabilityStatus": "Enabled",
"service": "SharePoint",
"servicePlanId": "e95bec33-7c88-4a70-8e19-b10bd9d0c014"
},
{
"assignedTimestamp": "2014-10-14T02:54:04Z",
"capabilityStatus": "Enabled",
"service": "MicrosoftCommunicationsOnline",
"servicePlanId": "0feaeb32-d00e-4d66-bd5a-43b5b83db82c"
},
{
"assignedTimestamp": "2014-10-14T02:54:04Z",
"capabilityStatus": "Enabled",
"service": "MicrosoftOffice",
"servicePlanId": "43de0ff5-c92c-492b-9116-175376d08c38"
},
{
"assignedTimestamp": "2014-10-14T02:54:04Z",
"capabilityStatus": "Enabled",
"service": "RMSOnline",
"servicePlanId": "bea4c11e-220a-4e6d-8eb8-8ea15d019f90"
}
],
"city": "Tulsa",
"country": "United States",
"creationType": null,
"department": "Sales & Marketing",
"dirSyncEnabled": null,
"displayName": "Garth Fort",
"facsimileTelephoneNumber": null,
"givenName": "Garth",
"immutableId": null,
"jobTitle": "Web Marketing Manager",
"lastDirSyncTime": null,
"mail": "garthf@a830edad9050849NDA1.onmicrosoft.com",
"mailNickname": "garthf",
"mobile": null,
"onPremisesSecurityIdentifier": null,
"otherMails": [],
"passwordPolicies": "None",
"passwordProfile": null,
"physicalDeliveryOfficeName": "20/1101",
"postalCode": "74133",
"preferredLanguage": "en-US",
"provisionedPlans": [
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "exchange"
},
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "MicrosoftCommunicationsOnline"
},
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "SharePoint"
},
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "SharePoint"
},
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "MicrosoftOffice"
}
],
"provisioningErrors": [],
"proxyAddresses": [
"SMTP:garthf@a830edad9050849NDA1.onmicrosoft.com"
],
"sipProxyAddress": "garthf@a830edad9050849NDA1.onmicrosoft.com",
"state": "OK",
"streetAddress": "7633 E. 63rd Place, Suite 300",
"surname": "Fort",
"telephoneNumber": "+1 918 555 0101",
"usageLocation": "US",
"userPrincipalName": "garthf@a830edad9050849NDA1.onmicrosoft.com",
"userType": "Member"
}
Response List
Status Code | Description |
---|---|
200 | OK. Indicates success. The signed-in user is returned in the response body. |
Code Samples
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;
namespace CSHttpClientSample
{
static class Program
{
static void Main()
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
/* OAuth2 is required to access this API. For more information visit:
https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks */
// Specify values for the following required parameters
queryString["api-version"] = "1.6";
// Specify values for path parameters (shown as {...})
var uri = "https://graph.windows.net/me?" + queryString;
var response = await client.GetAsync(uri);
if (response.Content != null)
{
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
}
}
}
}
@ECHO OFF
REM OAuth2 is required to access this API. For more information visit: https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
REM Specify values for path parameters (shown as {...}), values for query parameters
curl -v -X GET "https://graph.windows.net/me?api-version=1.6&"^
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class JavaSample {
public static void main(String[] args) {
HttpClient httpclient = HttpClients.createDefault();
try
{
// OAuth2 is required to access this API. For more information visit:
// https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
// Specify values for path parameters (shown as {...})
URIBuilder builder = new URIBuilder("https://graph.windows.net/me");
// Specify values for the following required parameters
builder.setParameter("api-version", "1.6");
URI uri = builder.build();
HttpGet request = new HttpGet(uri);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>JSSample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
// OAuth2 is required to access this API. For more information visit:
// https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
var params = {
// Specify values for the following required parameters
'api-version': "1.6",
};
$.ajax({
// Specify values for path parameters (shown as {...})
url: 'https://graph.windows.net/me?' + $.param(params),
type: 'GET',
})
.done(function(data) {
alert("success");
})
.fail(function() {
alert("error");
});
});
</script>
</body>
</html>
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// OAuth2 is required to access this API. For more information visit:
// https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
// Specify values for path parameters (shown as {...})
NSString* path = @"https://graph.windows.net/me";
NSArray* array = @[
@"entities=true",
];
NSString* string = [array componentsJoinedByString:@"&"];
path = [path stringByAppendingFormat:@"?%@", string];
NSLog(@"%@", path);
NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
[_request setHTTPMethod:@"GET"];
NSURLResponse *response = nil;
NSError *error = nil;
NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];
if(nil != error)
{
NSLog(@"Error: %@", error);
}
else
{
NSError* error = nil;
NSMutableDictionary* json = nil;
NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
NSLog(@"%@", dataString);
if(nil != _connectionData)
{
json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
}
if (error || !json)
{
NSLog(@"Could not parse loaded json with error:%@", error);
}
NSLog(@"%@", json);
_connectionData = nil;
}
[pool drain];
return 0;
}
<?php
// This sample uses the pecl_http package. (for more information: http://pecl.php.net/package/pecl_http)
require_once 'HTTP/Request2.php';
$headers = array(
);
$query_params = array(
// Specify values for the following required parameters
'api-version' => '1.6',
);
$request = new Http_Request2('https://graph.windows.net/me');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setHeader($headers);
// OAuth2 is required to access this API. For more information visit:
// https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
$url = $request->getUrl();
$url->setQueryVariables($query_params);
try
{
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex)
{
echo $ex;
}
?>
########### Python 2.7 #############
import httplib, urllib, base64
# OAuth2 is required to access this API. For more information visit: https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
headers = {
}
params = urllib.urlencode({
# Specify values for the following required parameters
'api-version': '1.6',
})
try:
conn = httplib.HTTPSConnection('graph.windows.net')
# Specify values for path parameters (shown as {...}) and request body if needed
conn.request("GET", "/me?%s" % params, "", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
# OAuth2 is required to access this API. For more information visit: https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
headers = {
}
params = urllib.parse.urlencode({
# Specify values for the following required parameters
'api-version': '1.6',
})
try:
conn = http.client.HTTPSConnection('graph.windows.net')
# Specify values for path parameters (shown as {...}) and request body if needed
conn.request("GET", "/me?%s" % params, "", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
require 'net/http'
uri = URI('https://graph.windows.net/me')
uri.query = URI.encode_www_form({
# Specify values for the following required parameters
'api-version' => '1.6',
})
request = Net::HTTP::Get.new(uri.request_uri)
# OAuth2 is required to access this API. For more information visit: https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
puts response.body
Get the signed-in user's manager (object)
{ "odata.metadata": "https://graph.windows.net/myorganization/$metadata#directoryObjects/Microsoft.DirectoryServices.User/@Element", "odata.type": "Microsoft.DirectoryServices.User", "objectType": "User", "objectId": "13addec1-c5ae-47f5-a1fe-202be14b1570", "deletionTimestamp": null, "accountEnabled": true, "signInNames": [], "assignedLicenses": [ { "disabledPlans": [], "skuId": "6fd2c87f-b296-42f0-b197-1e91e994b900" } ], "assignedPlans": [ { "assignedTimestamp": "2014-10-14T02:54:04Z", "capabilityStatus": "Enabled", "service": "exchange", "servicePlanId": "efb87545-963c-4e0d-99df-69c6916d9eb0" }, { "assignedTimestamp": "2014-10-14T02:54:04Z", "capabilityStatus": "Enabled", "service": "SharePoint", "servicePlanId": "5dbe027f-2339-4123-9542-606e4d348a72" }, { "assignedTimestamp": "2014-10-14T02:54:04Z", "capabilityStatus": "Enabled", "service": "SharePoint", "servicePlanId": "e95bec33-7c88-4a70-8e19-b10bd9d0c014" }, { "assignedTimestamp": "2014-10-14T02:54:04Z", "capabilityStatus": "Enabled", "service": "MicrosoftCommunicationsOnline", "servicePlanId": "0feaeb32-d00e-4d66-bd5a-43b5b83db82c" }, { "assignedTimestamp": "2014-10-14T02:54:04Z", "capabilityStatus": "Enabled", "service": "MicrosoftOffice", "servicePlanId": "43de0ff5-c92c-492b-9116-175376d08c38" }, { "assignedTimestamp": "2014-10-14T02:54:04Z", "capabilityStatus": "Enabled", "service": "RMSOnline", "servicePlanId": "bea4c11e-220a-4e6d-8eb8-8ea15d019f90" } ], "city": "Tulsa", "country": "United States", "creationType": null, "department": "Sales & Marketing", "dirSyncEnabled": null, "displayName": "Garth Fort", "facsimileTelephoneNumber": null, "givenName": "Garth", "immutableId": null, "jobTitle": "Web Marketing Manager", "lastDirSyncTime": null, "mail": "garthf@a830edad9050849NDA1.onmicrosoft.com", "mailNickname": "garthf", "mobile": null, "onPremisesSecurityIdentifier": null, "otherMails": [], "passwordPolicies": "None", "passwordProfile": null, "physicalDeliveryOfficeName": "20/1101", "postalCode": "74133", "preferredLanguage": "en-US", "provisionedPlans": [ { "capabilityStatus": "Enabled", "provisioningStatus": "Success", "service": "exchange" }, { "capabilityStatus": "Enabled", "provisioningStatus": "Success", "service": "MicrosoftCommunicationsOnline" }, { "capabilityStatus": "Enabled", "provisioningStatus": "Success", "service": "SharePoint" }, { "capabilityStatus": "Enabled", "provisioningStatus": "Success", "service": "SharePoint" }, { "capabilityStatus": "Enabled", "provisioningStatus": "Success", "service": "MicrosoftOffice" } ], "provisioningErrors": [], "proxyAddresses": [ "SMTP:garthf@a830edad9050849NDA1.onmicrosoft.com" ], "sipProxyAddress": "garthf@a830edad9050849NDA1.onmicrosoft.com", "state": "OK", "streetAddress": "7633 E. 63rd Place, Suite 300", "surname": "Fort", "telephoneNumber": "+1 918 555 0101", "usageLocation": "US", "userPrincipalName": "garthf@a830edad9050849NDA1.onmicrosoft.com", "userType": "Member" }
Get the signed-in user's manager (link)
GET https://graph.windows.net/me/$links/manager[?api-version]
Parameters |Parameter| Type|Value|Notes| |---------|-----|-----|------| |Query| |api-version| string |1.6|Specifies the version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required.|
Response
Status Code:200
Content-Type: application/json
{
"odata.metadata": "https://graph.windows.net/myorganization/$metadata#directoryObjects/$links/manager",
"url": "https://graph.windows.net/myorganization/directoryObjects/fabeb27a-0481-4a80-b43e-a5c02c125874/Microsoft.WindowsAzure.ActiveDirectory.User"
}
Response List |Status Code|Description| |------|------| |200 |OK. Indicates success. A link to the signed-in user's manager is returned.| |404| Not Found. The requested resource was not found. This could be due to a bad domain, a bad user ID, or can occur if the manager property is not currently set for the specified user.|
Code Samples
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;
namespace CSHttpClientSample
{
static class Program
{
static void Main()
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
/* OAuth2 is required to access this API. For more information visit:
https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks */
// Specify values for optional parameters, as needed
// queryString["api-version"] = "1.6";
// Specify values for path parameters (shown as {...})
var uri = "https://graph.windows.net/me/$links/manager?" + queryString;
var response = await client.GetAsync(uri);
if (response.Content != null)
{
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
}
}
}
}
@ECHO OFF
REM OAuth2 is required to access this API. For more information visit: https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
REM Specify values for path parameters (shown as {...}), values for query parameters
curl -v -X GET "https://graph.windows.net/me/$links/manager?api-version=1.6&"^
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class JavaSample {
public static void main(String[] args) {
HttpClient httpclient = HttpClients.createDefault();
try
{
// OAuth2 is required to access this API. For more information visit:
// https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
// Specify values for path parameters (shown as {...})
URIBuilder builder = new URIBuilder("https://graph.windows.net/me/$links/manager");
// Specify values for optional parameters, as needed
// builder.setParameter("api-version", "1.6");
URI uri = builder.build();
HttpGet request = new HttpGet(uri);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>JSSample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
// OAuth2 is required to access this API. For more information visit:
// https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
var params = {
// Specify values for optional parameters, as needed
// api-version: "1.6",
};
$.ajax({
// Specify values for path parameters (shown as {...})
url: 'https://graph.windows.net/me/$links/manager?' + $.param(params),
type: 'GET',
})
.done(function(data) {
alert("success");
})
.fail(function() {
alert("error");
});
});
</script>
</body>
</html>
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// OAuth2 is required to access this API. For more information visit:
// https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
// Specify values for path parameters (shown as {...})
NSString* path = @"https://graph.windows.net/me/$links/manager";
NSArray* array = @[
@"entities=true",
];
NSString* string = [array componentsJoinedByString:@"&"];
path = [path stringByAppendingFormat:@"?%@", string];
NSLog(@"%@", path);
NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
[_request setHTTPMethod:@"GET"];
NSURLResponse *response = nil;
NSError *error = nil;
NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];
if(nil != error)
{
NSLog(@"Error: %@", error);
}
else
{
NSError* error = nil;
NSMutableDictionary* json = nil;
NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
NSLog(@"%@", dataString);
if(nil != _connectionData)
{
json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
}
if (error || !json)
{
NSLog(@"Could not parse loaded json with error:%@", error);
}
NSLog(@"%@", json);
_connectionData = nil;
}
[pool drain];
return 0;
}
<?php
// This sample uses the pecl_http package. (for more information: http://pecl.php.net/package/pecl_http)
require_once 'HTTP/Request2.php';
$headers = array(
);
$query_params = array(
// Specify values for optional parameters, as needed
//'api-version' => '1.6',
);
$request = new Http_Request2('https://graph.windows.net/me/$links/manager');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setHeader($headers);
// OAuth2 is required to access this API. For more information visit:
// https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
$url = $request->getUrl();
$url->setQueryVariables($query_params);
try
{
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex)
{
echo $ex;
}
?>
########### Python 2.7 #############
import httplib, urllib, base64
# OAuth2 is required to access this API. For more information visit: https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
headers = {
}
params = urllib.urlencode({
# Specify values for optional parameters, as needed
#'api-version': '1.6',
})
try:
conn = httplib.HTTPSConnection('graph.windows.net')
# Specify values for path parameters (shown as {...}) and request body if needed
conn.request("GET", "/me/$links/manager?%s" % params, "", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
# OAuth2 is required to access this API. For more information visit: https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
headers = {
}
params = urllib.parse.urlencode({
# Specify values for optional parameters, as needed
#'api-version': '1.6',
})
try:
conn = http.client.HTTPSConnection('graph.windows.net')
# Specify values for path parameters (shown as {...}) and request body if needed
conn.request("GET", "/me/$links/manager?%s" % params, "", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
require 'net/http'
uri = URI('https://graph.windows.net/me/$links/manager')
uri.query = URI.encode_www_form({
# Specify values for optional parameters, as needed
# 'api-version' => '1.6',
})
request = Net::HTTP::Get.new(uri.request_uri)
# OAuth2 is required to access this API. For more information visit: https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
puts response.body
Update the signed-in user's manager
PUT https://graph.windows.net/me/$links/manager?api-version
Parameters |Parameter |Type| Value| Notes| |-----------|----|------|--------| |Query| |api-version| string | 1.6 |Specifies the version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required.| |Body| |Content-Type: application/json|
{
"url": "https://graph.windows.net/contoso.onmicrosoft.com/directoryObjects/fabeb27a-0481-4a80-b43e-a5c02c125874"
}
Response
Status Code:204
Content-Type: application/json
Response List |Status Code |Description| |-----------|-----------| |204| No Content. Indicates success. No response body is returned.| |404 |Not Found. The requested resource was not found. For exmaple, this could be due to a bad domain.|