사용자 계정 관리

Directory API는 사용자를 생성, 업데이트, 삭제하는 프로그래매틱 방식을 제공합니다. 개별 사용자 또는 지정된 기준을 충족하는 사용자 목록에 대한 정보를 가져올 수도 있습니다. 다음은 몇 가지 기본적인 사용자 작업의 예입니다.

사용자 계정 만들기

Google Workspace 계정의 모든 도메인에 사용자 계정을 추가할 수 있습니다. 사용자 계정을 추가하기 전에 도메인 소유권을 확인하세요.

개인 Gmail 계정을 자체 도메인 이름을 사용하는 비즈니스 이메일 계정으로 업그레이드한 경우 추가 Google Workspace 설정을 잠금 해제해야 새 사용자 계정을 만들 수 있습니다. 자세한 내용은 G Suite 비즈니스 이메일 계정이 G Suite Basic으로 업데이트됨을 참고하세요.

도메인 중 하나를 사용하여 사용자 계정을 만들려면 다음 POST 요청을 사용하여 인증 및 승인에 대해 알아보기에 설명된 승인을 포함합니다. Directory API에 사용 가능한 범위는 OAuth 2.0 범위 목록에서 확인할 수 있습니다. 요청 쿼리 문자열 속성은 users.insert() 메서드를 참조하세요.

POST https://admin.googleapis.com/admin/directory/v1/users

모든 만들기 요청은 요청을 처리하는 데 필요한 정보를 제출해야 합니다. 클라이언트 라이브러리를 사용하는 경우 이러한 라이브러리는 선택한 언어의 데이터 객체를 JSON 데이터 형식의 객체로 변환합니다.

JSON 요청

다음 JSON은 사용자를 만들기 위한 샘플 요청을 보여줍니다. 요청 및 응답 속성의 전체 목록은 API 참조를 확인하세요.

{
"primaryEmail": "liz@example.com",
"name": {
 "givenName": "Elizabeth",
 "familyName": "Smith"
},
"suspended": false,
"password": "new user password",
"hashFunction": "SHA-1",
"changePasswordAtNextLogin": false,
"ipWhitelisted": false,
"ims": [
 {
  "type": "work",
  "protocol": "gtalk",
  "im": "liz_im@talk.example.com",
  "primary": true
 }
],
"emails": [
 {
  "address": "liz@example.com",
  "type": "home",
  "customType": "",
  "primary": true
 }
],
"addresses": [
 {
  "type": "work",
  "customType": "",
  "streetAddress": "1600 Amphitheatre Parkway",
  "locality": "Mountain View",
  "region": "CA",
  "postalCode": "94043"
 }
],
"externalIds": [
 {
  "value": "12345",
  "type": "custom",
  "customType": "employee"
 }
],
"organizations": [
 {
  "name": "Google Inc.",
  "title": "SWE",
  "primary": true,
  "type": "work",
  "description": "Software engineer"
 }
],
"phones": [
 {
  "value": "+1 nnn nnn nnnn",
  "type": "work"
 }
],
"orgUnitPath": "/corp/engineering",
"includeInGlobalAddressList": true
}

생성 요청에 대한 쿼리 비율이 너무 높으면 API 서버로부터 할당량이 초과되었다는 HTTP 503 응답을 받을 수 있습니다. 이러한 응답을 받으면 지수 백오프 알고리즘을 사용하여 요청을 재시도하세요.

새 계정과 관련하여 유의해야 할 사항은 다음과 같습니다.

  • Google 계정으로 메일 라이선스를 구매한 경우 새 사용자 계정에 편지함이 자동으로 할당됩니다. 이 과제를 완료하고 활성화하는 데 몇 분 정도 걸릴 수 있습니다.
  • isAdmin와 같은 요청에서 읽기 전용 필드를 수정하는 작업은 API 서비스에서 자동으로 무시됩니다.
  • 계정에 허용되는 최대 도메인 수는 600개 (기본 도메인 1개 + 추가 도메인 599개)입니다.
  • 사용자 계정을 만들 때 사용자를 특정 조직 단위에 할당하지 않은 경우 계정은 최상위 조직 단위에 속하게 됩니다. 사용자의 조직 단위에 따라 사용자가 액세스할 수 있는 Google Workspace 서비스가 결정됩니다. 사용자가 새 조직으로 이동하면 사용자의 액세스 권한이 변경됩니다. 조직 구조에 대한 자세한 내용은 관리 고객센터를 참고하세요. 사용자를 다른 조직으로 이동하는 방법에 대한 자세한 내용은 사용자 업데이트하기를 참고하세요.
  • 새 사용자 계정에는 password가 필요합니다. hashFunction가 지정된 경우 비밀번호는 유효한 해시 키여야 합니다. 비밀번호가 지정되지 않은 경우 일반 텍스트로 구성되고 8~100자(영문 기준)의 ASCII 문자여야 합니다. 자세한 내용은 API 참조를 확인하세요.
  • Google Workspace 탄력 요금제를 사용하는 사용자의 경우 이 API를 사용해 사용자를 만들면 재정적 영향을 미치고 고객 결제 계정에 요금이 청구됩니다. 자세한 내용은 API 결제 정보를 참고하세요.
  • Google Workspace 계정에는 모든 도메인이 포함될 수 있습니다. 여러 도메인 계정에서 한 도메인의 사용자가 다른 계정 도메인의 사용자와 서비스를 공유할 수 있습니다. 여러 도메인의 사용자에 대한 자세한 내용은 API 다중 도메인 정보를 참고하세요.
  • 중복 계정이 있을 수 있습니다. 추가하려는 사용자에게 이미 Google 계정이 있는지 확인합니다. 그런 다음 이러한 계정과의 충돌을 방지하기 위한 단계를 따르세요. 중복 계정 찾기 및 해결하기를 참고하세요.
  • 방문자 계정이 있을 수 있습니다. 사용자가 Google 계정이 없는 조직 외부의 사용자를 Drive에서 공동작업하도록 초대하는 경우, 이 사용자에게는 방문자 사용자 이름@your_domain.com 형식의 방문자 계정이 제공됩니다. 방문자 계정과 동일한 사용자 이름을 가진 사용자를 추가하면 해당 계정은 전체 Google Workspace 계정으로 전환됩니다. 계정에서 현재의 Drive 파일 권한이 유지됩니다. 게스트와 문서 공유하기를 참고하세요.

성공적인 응답은 HTTP 200 상태 코드를 반환합니다. 응답은 상태 코드와 함께 새 사용자 계정의 속성을 반환합니다.

사용자 계정 업데이트

사용자 계정을 업데이트하려면 다음 PUT 요청을 사용하고 요청 승인에 설명된 승인을 포함합니다. userKey는 사용자의 기본 이메일 주소, 순 사용자 id 또는 사용자의 별칭 이메일 주소 중 하나일 수 있습니다.

PUT https://admin.googleapis.com/admin/directory/v1/users/userKey

요청 및 응답 본문에 모두 User 인스턴스가 포함됩니다. 하지만 Directory API는 패치 시맨틱스를 지원하므로 요청에서 업데이트된 필드만 제출하면 됩니다.

샘플 요청

아래 예에서 사용자의 givenName는 사용자 계정이 생성될 때 'Elizabeth'였으며 직장 이메일 주소만 제공되었습니다.

{
  "name": {
    "givenName": "Elizabeth",
    "familyName": "Smith"
   },
  "emails": [
    {
      "address": "liz@example.com",
      "type": "work",
      "primary": true
    }
}

아래 요청은 givenName를 'Elizabeth'에서 'Liz'로 업데이트하고 집 이메일 주소도 추가합니다. 필드가 배열이므로 두 이메일 주소 모두 제공됩니다.

PUT https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

{
  "name": {
    "givenName": "Liz",
   },
  "emails": [
    {
      "address": "liz@example.com",
      "type": "work",
      "primary": true
    },
    {
      "address": "liz@home.com",
      "type": "home"
    }
  ]
}

성공적인 응답은 HTTP 200 상태 코드와 업데이트된 필드가 있는 User 리소스를 반환합니다.

사용자의 계정 이름을 업데이트할 때는 다음 사항에 유의하세요.

  • 사용자 계정의 이름을 바꾸면 사용자의 기본 이메일 주소와 이 사용자 정보를 검색할 때 사용되는 도메인이 변경됩니다. 사용자 이름을 변경하기 전에 모든 브라우저 세션 및 서비스에서 사용자를 로그아웃시키는 것이 좋습니다.
  • 사용자 계정 이름 변경 프로세스가 모든 서비스에 전파되는 데 최대 10분이 걸릴 수 있습니다.
  • 사용자 이름을 바꾸면 이메일 전달 설정의 경우 지속적인 메일 전송을 보장하기 위해 이전 사용자 이름이 별칭으로 유지되며 새 사용자 이름으로 사용할 수 없습니다.
  • 또한 일반적으로 사용자 이메일 주소는 영구 데이터의 키로 사용하지 않는 것이 좋습니다. 이메일 주소는 변경될 수 있기 때문입니다.
  • Google Workspace 앱에서 사용자 이름 변경이 미치는 영향에 대한 전체 목록은 관리자 고객센터를 참조하세요.

사용자를 관리자로 지정하기

사용자를 최고 관리자로 만들려면 다음 POST 요청을 사용하여 요청 승인에 설명된 승인을 포함합니다. userKey는 사용자의 기본 이메일 주소, 순 사용자 id 또는 사용자의 별칭 이메일 주소 중 하나일 수 있습니다. 요청 및 응답 속성은 API 참조를 확인하세요. 최고 관리자에 대한 자세한 내용은 관리 고객센터를 참고하세요.

POST https://admin.googleapis.com/admin/directory/v1/users/userKey/makeAdmin

JSON 요청

이 예에서는 userKey이 liz@example.com인 사용자가 최고 관리자가 됩니다.

POST https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/makeAdmin
{
 "status": true
}

성공적인 응답은 HTTP 200 상태 코드를 반환합니다.

사용자 관계 관리

Directory API는 relations 필드를 사용하여 사용자 간의 다양한 유형의 관계를 정의합니다. 비즈니스 환경에서 사람들은 일반적으로 관리자-직원 및 비서 관계를 위해 이 필드를 사용하지만 이 필드는 다른 많은 유형도 지원합니다. 관계는 카드를 지원하는 모든 Google Workspace 애플리케이션에서 사용자의 '관련 인물' 카드에 표시됩니다. 카드가 표시되는 위치의 예는 사용자의 디렉터리 프로필에 정보 추가를 참고하세요.

사용자 간의 관계 만들기

관계에 relations 필드가 포함된 '소유' 사용자부터 시작하여 한 방향으로만 관계를 정의할 수 있습니다. type는 상대방과 소유한 사용자의 관계를 설명합니다. 예를 들어 관리자-직원 관계에서 직원은 소유하는 사용자이고 개발자는 manager 유형으로 이 사용자의 계정에 relations 필드를 추가합니다. 허용되는 유형은 User 객체 참조를 확인하세요.

relations 필드가 포함된 JSON 요청 본문으로 소유 사용자를 만들거나 업데이트하여 관계를 설정합니다. 하나의 요청으로 여러 관계를 만들 수 있습니다.

{
  "relations": [
    {
      "value": "EMAIL_ADDRESS_RELATION_1",
      "type": "manager"
    },
    {
      "value": "EMAIL_ADDRESS_RELATION_2",
      "type": "dotted_line_manager"
    }
  ]
}

관계 업데이트 또는 삭제

relations 필드는 전체적으로만 업데이트할 수 있으며, 관계 유형을 변경하거나 삭제하기 위해 나열된 개별 사용자를 처리할 수는 없습니다. 위의 예에서 기존 관리자 관계를 삭제하고 점선으로 된 관리자를 소유 중인 사용자의 관리자로 지정하려면 원하는 모든 필드 값으로 소유하는 사용자의 계정을 업데이트합니다.

{
  "relations": [
    {
      "value": "EMAIL_ADDRESS_RELATION_2",
      "type": "manager"
    }
  ]
}

소유한 사용자의 관계를 모두 삭제하려면 relations를 비워 둡니다.

{
  "relations": []
}

사용자 검색

사용자를 검색하려면 다음 GET 요청을 사용하고 요청 승인에 설명된 승인을 포함합니다. userKey는 사용자의 기본 이메일 주소, 순 사용자 id 또는 사용자의 별칭 이메일 주소 중 하나일 수 있습니다. 요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

GET https://admin.googleapis.com/admin/directory/v1/users/userKey

이 예에서는 기본 또는 별칭 이메일 주소가 liz@example.com인 사용자의 사용자 계정 속성을 반환합니다.

GET https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

JSON 응답

성공적인 응답은 HTTP 200 상태 코드를 반환합니다. 응답은 상태 코드와 함께 사용자 계정의 속성을 반환합니다.

{
 "kind": "directory#user",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "name": {
  "givenName": "Liz",
  "familyName": "Smith",
  "fullName": "Liz Smith"
 },
 "isAdmin": true,
 "isDelegatedAdmin": false,
 "lastLoginTime": "2013-02-05T10:30:03.325Z",
 "creationTime": "2010-04-05T17:30:04.325Z",
 "agreedToTerms": true,
 "hashFunction": "SHA-1",
 "suspended": false,
 "changePasswordAtNextLogin": false,
 "ipWhitelisted": false,
 "ims": [
  {
   "type": "work",
   "protocol": "gtalk",
   "im": "lizim@talk.example.com",
   "primary": true
  }
 ],
 "emails": [
  {
   "address": "liz@example.com",
   "type": "home",
   "customType": "",
   "primary": true
  }
 ],
 "addresses": [
  {
   "type": "work",
   "customType": "",
   "streetAddress": "1600 Amphitheatre Parkway",
   "locality": "Mountain View",
   "region": "CA",
   "postalCode": "94043"
  }
 ],
 "externalIds": [
  {
   "value": "employee number",
   "type": "custom",
   "customType": "office"
  }
 ],
 "organizations": [
  {
   "name": "Google Inc.",
   "title": "SWE",
   "primary": true,
   "customType": "",
   "description": "Software engineer"
  }
 ],
 "phones": [
  {
   "value": "+1 nnn nnn nnnn",
   "type": "work"
  }
 ],
 "aliases": [
  "lizsmith@example.com",
  "lsmith@example.com"
 ],
 "nonEditableAliases": [
  "liz@test.com"
 ],
 "customerId": "C03az79cb",
 "orgUnitPath": "corp/engineering",
 "isMailboxSetup": true,
 "includeInGlobalAddressList": true
}

도메인의 모든 사용자 검색

동일한 도메인에 있는 모든 사용자를 검색하려면 다음 GET 요청을 사용하여 요청 승인에 설명된 승인을 포함합니다. 가독성을 위해 이 예시에서는 줄 반환을 사용합니다.

GET https://admin.googleapis.com/admin/directory/v1/users
?domain=primary domain name&pageToken=token for next results page
&maxResults=max number of results per page
&orderBy=email, givenName, or familyName
&sortOrder=ascending or descending
&query=email, givenName, or familyName:the query's value*

요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

JSON 응답

이 예에서는 example.com 도메인의 모든 사용자가 반환되며 응답 페이지당 최대 2개의 사용자 도메인이 포함됩니다. 이 응답의 후속 사용자 목록에 대한 nextPageToken가 있습니다. 기본적으로 시스템은 사용자 이메일 주소의 알파벳순으로 100명의 사용자 목록을 반환합니다.

GET https://admin.googleapis.com/admin/directory/v1/users?domain=example.com&maxResults=2

성공적인 응답은 HTTP 200 상태 코드를 반환합니다. 응답은 상태 코드와 함께 example.com 도메인 (maxResults=2)의 사용자 계정 2개를 반환합니다.

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "liz@example.com",
   "name": {
    "givenName": "Liz",
    "familyName": "Smith",
    "fullName": "Liz Smith"
   },
   "isAdmin": true,
   "isDelegatedAdmin": false,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "ims": [
    {
     "type": "work",
     "protocol": "gtalk",
     "im": "lizim@talk.example.com",
     "primary": true
    }
   ],
   "emails": [
    {
     "address": "liz@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "addresses": [
    {
     "type": "work",
     "customType": "",
     "streetAddress": "1600 Amphitheatre Parkway",
     "locality": "Mountain View",
     "region": "CA",
     "postalCode": "94043"
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "organizations": [
    {
     "name": "Google Inc.",
     "title": "SWE",
     "primary": true,
     "customType": "",
     "description": "Software engineer"
    }
   ],
   "phones": [
    {
     "value": "+1 nnn nnn nnnn",
     "type": "work"
    }
   ],
   "aliases": [
    "lizsmith@example.com",
    "lsmith@example.com"
   ],
   "nonEditableAliases": [
    "liz@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "corp/engineering",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "user unique ID",
   "primaryEmail": "admin2@example.com",
   "name": {
    "givenName": "admin",
    "familyName": "two",
    "fullName": "admin two"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": true,
   "suspensionReason": "ADMIN",
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "admin2@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "contractor license number",
     "type": "custom",
     "customType": "work"
    }
   ],
   "aliases": [
    "second_admin@example.com"
   ],
   "nonEditableAliases": [
    "admin@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "corp/engineering",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  }
 ],
 "nextPageToken": "next page token"
}

모든 계정 사용자 검색

여러 도메인으로 구성될 수 있는 계정의 모든 사용자를 검색하려면 다음 GET 요청을 사용하여 요청 승인에 설명된 승인을 포함합니다. 가독성을 위해 이 예시에서는 줄 반환을 사용합니다.

GET https://admin.googleapis.com/admin/directory/v1/users
?customer=my_customer or customerId&pageToken=token for next results page
&maxResults=max number of results per page
&orderBy=email, givenName, or familyName
&sortOrder=ascending or descending
&query=user attributes
  • customer 쿼리 문자열은 my_customer 또는 customerId 값입니다.
  • my_customer 문자열을 사용하여 계정의 customerId을 나타냅니다.
  • 리셀러 관리자는 리셀러 고객의 customerId을 사용하세요. customerId의 경우 도메인의 모든 사용자 검색 작업 요청에 계정의 기본 도메인 이름을 사용합니다. 결과 응답에는 customerId 값이 포함됩니다.
  • 선택사항인 orderBy 쿼리 문자열은 사용자의 기본 이메일 주소, 성 또는 이름을 기준으로 목록을 정렬할지 결정합니다. orderBy를 사용하는 경우 sortOrder 쿼리 문자열을 사용하여 결과를 오름차순 또는 내림차순으로 나열할 수도 있습니다.
  • 선택사항인 query 쿼리 문자열을 사용하면 핵심 및 커스텀 필드를 비롯한 사용자 프로필의 여러 필드를 검색할 수 있습니다. 예를 보려면 사용자 검색을 참고하세요.

요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

이 예에서 계정 관리자는 각 응답 페이지에 사용자 항목을 하나씩 포함하여 계정의 모든 사용자를 반환하도록 요청합니다. nextPageToken는 결과의 후속 페이지로 이동합니다.

GET https://admin.googleapis.com/admin/directory/v1/users?customer=my_customer&maxResults=1

이 예에서 리셀러 관리자는 customerId 값이 C03az79cb인 리셀러 계정의 모든 사용자에게 요청합니다.

GET https://admin.googleapis.com/admin/directory/v1/users?customer=C03az79cb&maxResults=1

JSON 응답

성공적인 응답은 HTTP 200 상태 코드를 반환합니다. 응답은 상태 코드와 함께 이 계정의 모든 사용자를 반환합니다.

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "admin2@example.com",
   "name": {
    "givenName": "admin",
    "familyName": "two",
    "fullName": "admin two"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "admin2@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
     "second_admin@example.com"
   ],
   "nonEditableAliases": [
     "another_admin@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "liz@example.com",
   "name": {
    "givenName": "Elizabeth",
    "familyName": "Smith",
    "fullName": "Elizabeth Smith"
   },
   "isAdmin": false,
   "isDelegatedAdmin": false,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": false,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "liz@example.com",
     "type": "home",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "bank"
    }
   ],
   "relations": [
    {
     "value": "liz",
     "type": "friend",
     "customType": ""
    }
   ],
   "aliases": [
    "lizsmith@example.com",
    "lsmith@example.com"
   ],
   "nonEditableAliases": [
    "liz@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "test3@example.com",
   "name": {
    "givenName": "Tester",
    "familyName": "Three",
    "fullName": "Tester Three"
   },
   "isAdmin": false,
   "isDelegatedAdmin": false,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "test@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
    "tester3@example.com"
   ],
   "nonEditableAliases": [
    "third@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "work_admin@example.com",
   "name": {
    "givenName": "Admin",
    "familyName": "Work",
    "fullName": "Admin Work"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "work_admin@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
    "my_alias@example.com"
   ],
   "nonEditableAliases": [
    "other_alias@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  }
 ],
 "nextPageToken": "NNNNN"
}

최근에 삭제한 사용자 검색

계정 또는 계정의 도메인 중 하나에서 지난 20일 이내에 삭제된 모든 사용자를 검색하려면 다음 GET 요청을 사용하고 요청 승인에 설명된 승인을 포함합니다. 사용자를 삭제 취소하려면 사용자 삭제 취소를 참조하세요.

계정의 기본 도메인 또는 하위 도메인에서 지난 20일 이내에 삭제된 사용자를 검색하려면 다음 GET 요청을 사용합니다. domain 쿼리 문자열은 도메인의 기본 도메인 이름입니다. 사용자 요청 및 응답 속성에 대해서는 API 참조를 확인하세요. 또한 가독성을 위해 이 예시에서는 줄 반환을 사용합니다.

GET https://admin.googleapis.com/admin/directory/v1/users
?domain=primary domain name&pageToken=token for next results page
&maxResults=max number of results per page
&showDeleted=true
계정에 여러 도메인이 있는 경우 전체 계정에서 지난 20일 이내에 삭제된 사용자를 검색하려면 다음 GET 요청을 사용합니다. 가독성을 위해 이 예에서는 줄 반환을 사용합니다.
GET https://admin.googleapis.com/admin/directory/v1/users
?customer=my_customer or customerId&pageToken=token for next results page
&maxResults=max number of results per page&showDeleted=true
  • customer 쿼리 문자열은 my_customer 또는 customerId 값입니다.
  • 계정 관리자는 my_customer 문자열을 사용하여 계정의 customerId을 나타냅니다.
  • 리셀러 관리자는 리셀러 고객의 customerId을 사용하세요. customerId의 경우 도메인의 모든 사용자 검색 작업 요청에 계정의 기본 도메인 이름을 사용합니다. 결과 응답에는 customerId 값이 포함됩니다.

요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

다음 예에서 계정 관리자는 계정에서 삭제된 모든 사용자에게 요청합니다.

GET https://admin.googleapis.com/admin/directory/v1/users?customer=my_customer&showDeleted=true

JSON 응답

성공적인 응답은 HTTP 200 상태 코드를 반환합니다. 응답에는 상태 코드와 함께 지난 20일 이내에 삭제된 모든 계정 사용자가 반환됩니다.

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "user1@example.com"
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "user3@example.com"
  }
 ],
 "nextPageToken": "token for next page of deleted users"
}

사용자 사진 검색

API가 사진 미리보기 이미지 한 개(최신 Google 프로필 사진)를 검색합니다. 사용자의 마지막 사진을 가져오려면 다음 GET 요청을 사용하여 요청 승인에 설명된 승인을 포함합니다. userKey는 사용자의 기본 이메일 주소, 사용자 id 또는 사용자의 별칭 이메일일 수 있습니다. 요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

GET https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

이 예에서는 liz@example.com의 최신 사진이 반환됩니다.

GET https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/photos/thumbnail

JSON 응답

성공적인 응답은 HTTP 200 상태 코드를 반환합니다.

{
 "kind": "directory#user#photo",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "mimeType": "the photo mime type",
 "height": "the photo height in pixels",
 "width": "the photo width in pixels",
 "photoData": "web safe base64 encoded photo data"
}

사진에 대한 API의 웹 안전 base64 인코딩은 RFC 4648 'base64url'과 유사합니다. 이는 다음을 의미합니다.

  • 슬래시 (/) 문자는 밑줄 (_) 문자로 대체됩니다.
  • 더하기 기호 (+)는 하이픈 (-) 문자로 대체됩니다.
  • 등호 (=) 문자는 별표 (*)로 대체됩니다.
  • 패딩의 경우 패딩에 등호(=)를 사용하는 RFC-4648 baseURL 정의 대신 마침표(.) 문자가 사용됩니다. 이는 URL 파싱을 간소화하기 위한 것입니다.
  • 업로드 중인 사진의 크기에 관계없이 API는 사진의 크기를 96x96픽셀로 줄입니다.

자바스크립트에서 호환되는 링크를 만들어야 하는 경우 Google 클로저 라이브러리에 Apache 라이선스에 따라 제공되는 Base64 인코딩 및 디코딩 함수가 포함되어 있습니다.

사용자를 관리자가 아닌 사용자로 검색

사용자 계정은 관리자만 수정할 수 있지만 도메인의 모든 사용자는 사용자 프로필을 읽을 수 있습니다. 관리자가 아닌 사용자는 domain_public와 동일한 viewType 매개변수를 사용하여 users.get 또는 users.list 요청을 하여 사용자의 공개 프로필을 검색할 수 있습니다. https://www.googleapis.com/auth/admin.directory.user.readonly 범위는 이 사용 사례에 적합합니다.

domain_public 뷰를 사용하면 관리자가 아닌 사용자가 표준 핵심 필드 집합에 액세스할 수 있습니다. 커스텀 필드의 경우 스키마를 정의할 때 공개 또는 비공개 여부를 선택할 수 있습니다.

사용자 사진 업데이트

사용자의 사진을 업데이트하려면 다음 PUT 요청을 사용하고 요청 승인에 설명된 승인을 포함합니다. userKey는 사용자의 기본 이메일 주소, 사용자 id 또는 사용자 별칭의 이메일일 수 있습니다. 요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

PUT https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

이 예에서는 liz@example.com 사진이 다음과 같이 업데이트됩니다.

PUT https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/photos/thumbnail
{
"photoData": "web safe base64 encoded photo data"
}

사진을 업데이트할 때 API에서 heightwidth를 무시합니다.

JSON 응답

성공적인 응답은 HTTP 200 상태 코드를 반환합니다.

{
 "kind": "directory#user#photo",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "mimeType": "the photo mime type",
 "height": "the photo height in pixels",
 "width": "the photo width in pixels",
 "photoData": "web safe base64 encoded photo data"
}

사용자 사진 삭제

사용자 사진을 삭제하려면 다음 DELETE 요청을 사용하여 요청 승인에 설명된 승인을 포함합니다. userKey는 사용자의 기본 이메일 주소, 사용자 id 또는 사용자 별칭의 이메일일 수 있습니다. 요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

DELETE https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

삭제되면 사용자의 사진이 표시되지 않습니다. 사용자의 사진이 필요할 때마다 실루엣이 대신 표시됩니다.

사용자 계정 삭제

사용자 계정을 삭제하려면 다음 DELETE 요청을 사용하고 요청 승인에 설명된 승인을 포함합니다. userKey는 사용자의 기본 이메일 주소, 순 사용자 id 또는 사용자의 별칭 이메일 주소 중 하나일 수 있습니다. 요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

DELETE https://admin.googleapis.com/admin/directory/v1/users/userKey

이 예에서는 liz@example.com 사용자 계정이 삭제됩니다.

DELETE https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

응답 성공 시 HTTP 200 상태 코드만 반환됩니다.

사용자를 삭제하기 전에 고려해야 할 중요 사항:

  • 삭제된 사용자는 더 이상 로그인할 수 없습니다.
  • 사용자 계정 삭제에 대한 자세한 내용은 관리 고객센터를 참고하세요.

사용자 계정 삭제 취소

지난 20일 내에 삭제된 사용자가 특정 조건을 충족해야 사용자 계정을 복원할 수 있습니다.

사용자 계정을 삭제 취소하려면 다음 POST 요청을 사용하여 요청 승인에 설명된 승인을 포함합니다. userKey지난 20일 이내에 삭제된 사용자 검색 작업의 응답에서 발견된 순 사용자 id입니다. 사용자의 기본 이메일 주소 또는 사용자의 별칭 이메일 주소 중 하나를 이 작업의 userKey에서 사용할 수 없습니다. 요청 및 응답 속성에 대해서는 API 참조를 확인하세요.

POST https://admin.googleapis.com/admin/directory/v1/users/userKey/undelete

이 예에서는 사용자 liz@example.com의 삭제가 취소되었습니다. 이 사용자의 이전 계정 속성이 모두 복원됩니다.

POST https://admin.googleapis.com/admin/directory/v1/users/12309329403209438205/undelete

성공적 응답은 HTTP 204 상태 코드만 반환합니다. 삭제되지 않은 사용자의 계정을 보려면 사용자 검색 작업을 사용하세요.