사용자 계정 관리

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에서 공동작업하면 visitor_username@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 도메인의 사용자 계정 2개 (maxResults=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가 사진 썸네일 한 개(최신 Gmail Chat 프로필 사진)를 가져옵니다. 사용자의 최근 사진을 가져오려면 다음 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 상태 코드만 반환합니다. 삭제되지 않은 사용자의 계정을 보려면 사용자 검색 작업을 사용하세요.