正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

グループおよびプロジェクトメンバーAPI

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

このAPIを使用して、グループメンバーやプロジェクトメンバーとやり取りします。

ロール

ユーザーまたはグループに割り当てられたロールは、Gitlab::Accessモジュールでaccess_levelとして定義されています。

  • アクセスなし(0
  • 最小アクセス(5
  • ゲスト(10
  • プランナー(15
  • レポーター(20
  • デベロッパー(30
  • メンテナー(40
  • オーナー(50
  • 管理者(60

既知の問題

  • group_saml_identity属性とgroup_scim_identity属性は、SSOが有効なグループのグループオーナーのみに表示されます。
  • APIリクエストがグループ自体、またはそのグループのサブグループまたはプロジェクトに送信される場合、email属性は、グループのエンタープライズユーザーのグループオーナーのみに表示されます。

グループまたはプロジェクトのすべてのメンバーをリストする

認証済みユーザーが表示可能なグループメンバーまたはプロジェクトメンバーのリストを取得します。祖先グループを介した継承メンバーや招待グループのメンバーではなく、直接メンバーのみを返します。

この関数は、ページネーションパラメータpageおよびper_pageを受け取り、ユーザーのリストを制限します。

GET /groups/:id/members
GET /projects/:id/members
属性必須説明
id整数または文字列はいプロジェクトまたはグループのIDまたはURLエンコードされたパス
query文字列いいえ指定された名前、メール、またはユーザー名に基づいて結果をフィルタリングします。クエリのスコープを広げるには、部分的な値を使用します。
user_ids整数の配列いいえ指定されたユーザーIDで結果をフィルタリングします。
skip_users整数の配列いいえスキップされたユーザーを結果から除外します。
show_seat_infoブール値いいえユーザーのシート情報を表示します。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members"
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/:id/members"

レスポンス例:

[
  {
    "id": 1,
    "username": "raymond_smith",
    "name": "Raymond Smith",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root",
    "created_at": "2012-09-22T14:13:35Z",
    "created_by": {
      "id": 2,
      "username": "john_doe",
      "name": "John Doe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
      "web_url": "http://192.168.1.8:3000/root"
    },
    "expires_at": "2012-10-22",
    "access_level": 30,
    "group_saml_identity": null
  },
  {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root",
    "created_at": "2012-09-22T14:13:35Z",
    "created_by": {
      "id": 1,
      "username": "raymond_smith",
      "name": "Raymond Smith",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
      "web_url": "http://192.168.1.8:3000/root"
    },
    "expires_at": "2012-10-22",
    "access_level": 30,
    "email": "john@example.com",
    "group_saml_identity": {
      "extern_uid":"ABC-1234567890",
      "provider": "group_saml",
      "saml_provider_id": 10
    }
  }
]

継承メンバーと招待メンバーを含めて、グループまたはプロジェクトのすべてのメンバーをリストする

認証済みユーザーが表示可能なグループメンバーまたはプロジェクトメンバーのリストを、祖先グループ経由で継承されたメンバー、招待されたユーザー、権限を含めて取得します。

ユーザーがこのグループまたはプロジェクト、および1つ以上の祖先グループのメンバーである場合、access_levelがもっとも高いメンバーシップのみが返されます。これは、ユーザーの有効な権限を表します。

招待グループのメンバーは、次のいずれかの場合に返されます:

  • 招待グループが公開されている。
  • リクエスタも招待グループのメンバーである。
  • リクエスタが共有グループまたは共有プロジェクトのメンバーである。

招待グループのメンバーは、共有グループまたは共有プロジェクトでメンバーシップを共有しています。つまり、リクエスタが共有グループまたは共有プロジェクトのメンバーであるが、招待プライベートグループのメンバーではない場合、このエンドポイントを使用すると、リクエスタは、招待プライベートグループのメンバーを含む、すべての共有グループまたは共有プロジェクトのメンバーを取得できます。

この関数は、ページネーションパラメータpageおよびper_pageを受け取り、ユーザーのリストを制限します。

GET /groups/:id/members/all
GET /projects/:id/members/all
属性必須説明
id整数または文字列はいプロジェクトまたはグループのIDまたはURLエンコードされたパス
query文字列いいえ指定された名前、メール、またはユーザー名に基づいて結果をフィルタリングします。クエリのスコープを広げるには、部分的な値を使用します。
user_ids整数の配列いいえ指定されたユーザーIDで結果をフィルタリングします。
show_seat_infoブール値いいえユーザーのシート情報を表示します。
state文字列いいえメンバー状態(awaitingまたはactiveのいずれか)で結果をフィルタリングします。PremiumおよびUltimateのみ
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/all"
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/:id/members/all"

レスポンス例:

[
  {
    "id": 1,
    "username": "raymond_smith",
    "name": "Raymond Smith",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root",
    "created_at": "2012-09-22T14:13:35Z",
    "created_by": {
      "id": 2,
      "username": "john_doe",
      "name": "John Doe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
      "web_url": "http://192.168.1.8:3000/root"
    },
    "expires_at": "2012-10-22",
    "access_level": 30,
    "group_saml_identity": null
  },
  {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root",
    "created_at": "2012-09-22T14:13:35Z",
    "created_by": {
      "id": 1,
      "username": "raymond_smith",
      "name": "Raymond Smith",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
      "web_url": "http://192.168.1.8:3000/root"
    },
    "expires_at": "2012-10-22",
    "access_level": 30,
    "email": "john@example.com",
    "group_saml_identity": {
      "extern_uid":"ABC-1234567890",
      "provider": "group_saml",
      "saml_provider_id": 10
    }
  },
  {
    "id": 3,
    "username": "foo_bar",
    "name": "Foo bar",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root",
    "created_at": "2012-10-22T14:13:35Z",
    "created_by": {
      "id": 2,
      "username": "john_doe",
      "name": "John Doe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
      "web_url": "http://192.168.1.8:3000/root"
    },
    "expires_at": "2012-11-22",
    "access_level": 30,
    "group_saml_identity": null
  }
]

グループまたはプロジェクトのメンバーを取得する

グループまたはプロジェクトのメンバーを取得します。祖先グループを介した継承メンバーではなく、直接メンバーのみを返します。

GET /groups/:id/members/:user_id
GET /projects/:id/members/:user_id
属性必須説明
id整数または文字列はいプロジェクトまたはグループのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id"

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/:id/members/:user_id"

グループメンバーのカスタムロールを更新または削除するには、空のmember_role_id値を渡します:

# Updates a project membership
curl --request PUT --header "Content-Type: application/json" \
  --header "Authorization: Bearer <your_access_token>" \
  --data '{"member_role_id": null, "access_level": 10}' "https://gitlab.example.com/api/v4/projects/<project_id>/members/<user_id>"

# Updates a group membership
curl --request PUT --header "Content-Type: application/json" \
  --header "Authorization: Bearer <your_access_token>" \
  --data '{"member_role_id": null, "access_level": 10}' "https://gitlab.example.com/api/v4/groups/<group_id>/members/<user_id>"

レスポンス例:

{
  "id": 1,
  "username": "raymond_smith",
  "name": "Raymond Smith",
  "state": "active",
  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
  "web_url": "http://192.168.1.8:3000/root",
  "access_level": 30,
  "email": "john@example.com",
  "created_at": "2012-10-22T14:13:35Z",
  "created_by": {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root"
  },
  "expires_at": null,
  "group_saml_identity": null
}

継承メンバーと招待メンバーを含めて、グループまたはプロジェクトのメンバーを取得する

祖先グループを通じて継承または招待されたメンバーを含め、グループまたはプロジェクトのメンバーを取得します。詳細については、対応するすべての継承メンバーをリストするためのエンドポイントを参照してください。

招待グループのメンバーは、共有グループまたは共有プロジェクトでメンバーシップを共有しています。つまり、リクエスタが共有グループまたは共有プロジェクトのメンバーであるが、招待プライベートグループのメンバーではない場合、このエンドポイントを使用すると、リクエスタは、招待プライベートグループのメンバーを含む、すべての共有グループまたは共有プロジェクトのメンバーを取得できます。

GET /groups/:id/members/all/:user_id
GET /projects/:id/members/all/:user_id
属性必須説明
id整数または文字列はいプロジェクトまたはグループのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/all/:user_id"
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/:id/members/all/:user_id"

レスポンス例:

{
  "id": 1,
  "username": "raymond_smith",
  "name": "Raymond Smith",
  "state": "active",
  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
  "web_url": "http://192.168.1.8:3000/root",
  "access_level": 30,
  "created_at": "2012-10-22T14:13:35Z",
  "created_by": {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root"
  },
  "email": "john@example.com",
  "expires_at": null,
  "group_saml_identity": null
}

グループのすべての請求対象メンバーをリストする

請求対象としてカウントされるグループメンバーのリストを取得します。このリストには、サブグループとプロジェクトのメンバーが含まれています。

前提要件:

  • 請求権限に示されているように、課金権限のAPIエンドポイントにアクセスするには、オーナーロールが必要です。
  • このAPIエンドポイントは、トップレベルグループでのみ機能します。サブグループでは機能しません。

この関数は、ページネーションパラメータpageおよびper_pageを受け取り、ユーザーのリストを制限します。

searchパラメータを使用して名前で請求対象グループメンバーを検索し、sortを使用して結果を並べ替えます。

GET /groups/:id/billable_members
属性必須説明
id整数または文字列はいグループのIDまたはURLエンコードされたパス
search文字列いいえ名前、ユーザー名、または公開メールアドレスでグループメンバーを検索するためのクエリ文字列。
sort文字列いいえ並べ替え属性と順序を指定するパラメータを含むクエリ文字列。以下にサポートされている値を示します。

sort属性でサポートされている値は次のとおりです:

説明
access_level_ascアクセスレベル、昇順
access_level_descアクセスレベル、降順
last_joined最終参加者
name_asc名前、昇順
name_desc名前、降順
oldest_joined最古の参加者
oldest_sign_in最古のサインイン
recent_sign_in最近のサインイン
last_activity_on_asc最終活動日、昇順
last_activity_on_desc最終活動日、降順
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/billable_members"

レスポンス例:

[
  {
    "id": 1,
    "username": "raymond_smith",
    "name": "Raymond Smith",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root",
    "last_activity_on": "2021-01-27",
    "membership_type": "group_member",
    "removable": true,
    "created_at": "2021-01-03T12:16:02.000Z",
    "last_login_at": "2022-10-09T01:33:06.000Z"
  },
  {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root",
    "email": "john@example.com",
    "last_activity_on": "2021-01-25",
    "membership_type": "group_member",
    "removable": true,
    "created_at": "2021-01-04T18:46:42.000Z",
    "last_login_at": "2022-09-29T22:18:46.000Z"
  },
  {
    "id": 3,
    "username": "foo_bar",
    "name": "Foo bar",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root",
    "last_activity_on": "2021-01-20",
    "membership_type": "group_invite",
    "removable": false,
    "created_at": "2021-01-09T07:12:31.000Z",
    "last_login_at": "2022-10-10T07:28:56.000Z"
  }
]

グループの請求対象メンバーのメンバーシップをリストする

グループの請求対象メンバーについて、メンバーシップのリストを取得します。

前提要件:

  • 応答は、直接メンバーシップのみを表します。継承されたメンバーシップは含まれていません。
  • このAPIエンドポイントは、トップレベルグループでのみ機能します。サブグループでは機能しません。
  • このAPIエンドポイントを使用するには、グループのメンバーシップを管理するための権限が必要です。

ユーザーがメンバーであるすべてのプロジェクトとグループをリストします。グループ階層内のプロジェクトとグループのみが含まれます。たとえば、リクエストされたグループがTop-Level Groupで、リクエストされたユーザーがTop-Level Group / Subgroup OneOther Group / Subgroup Twoの両方の直接メンバーである場合、Other Group / Subgroup TwoTop-Level Group階層にないため、Top-Level Group / Subgroup Oneのみが返されます。

このAPIエンドポイントは、ページネーションパラメータpageper_pageを受け取り、メンバーシップのリストを制限します。

GET /groups/:id/billable_members/:user_id/memberships
属性必須説明
id整数または文字列はいグループのIDまたはURLエンコードされたパス
user_id整数はい請求対象メンバーのユーザーID。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/memberships"

レスポンス例:

[
  {
    "id": 168,
    "source_id": 131,
    "source_full_name": "Top-Level Group / Subgroup One",
    "source_members_url": "https://gitlab.example.com/groups/root-group/sub-group-one/-/group_members",
    "created_at": "2021-03-31T17:28:44.812Z",
    "expires_at": "2022-03-21",
    "access_level": {
      "string_value": "Developer",
      "integer_value": 30
    }
  },
  {
    "id": 169,
    "source_id": 63,
    "source_full_name": "Top-Level Group / Subgroup One / My Project",
    "source_members_url": "https://gitlab.example.com/root-group/sub-group-one/my-project/-/project_members",
    "created_at": "2021-03-31T17:29:14.934Z",
    "expires_at": null,
    "access_level": {
      "string_value": "Maintainer",
      "integer_value": 40
    }
  }
]

グループの請求対象メンバーの間接メンバーシップをリストする

  • ステータス: 実験的機能

グループの請求対象メンバーの間接的なメンバーシップのリストを取得します。

前提要件:

  • このAPIエンドポイントは、トップレベルグループでのみ機能します。サブグループでは機能しません。
  • このAPIエンドポイントを使用するには、グループのメンバーシップを管理するための権限が必要です。

ユーザーがメンバーであることに加えて、リクエストされたトップレベルグループに招待されたすべてのプロジェクトとグループをリストします。たとえば、リクエストされたグループがTop-Level Groupで、リクエストされたユーザーがOther Group / Subgroup TwoTop-Level Groupに招待された)の直接メンバーである場合、Other Group / Subgroup Twoのみが返されます。

応答は、間接メンバーシップのみをリストします。直接メンバーシップは含まれません。

このAPIエンドポイントは、ページネーションパラメータpageper_pageを受け取り、メンバーシップのリストを制限します。

GET /groups/:id/billable_members/:user_id/indirect
属性必須説明
id整数または文字列はいグループのIDまたはURLエンコードされたパス
user_id整数はい請求対象メンバーのユーザーID。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id/indirect"

レスポンス例:

[
  {
    "id": 168,
    "source_id": 132,
    "source_full_name": "Invited Group / Subgroup One",
    "source_members_url": "https://gitlab.example.com/groups/invited-group/sub-group-one/-/group_members",
    "created_at": "2021-03-31T17:28:44.812Z",
    "expires_at": "2022-03-21",
    "access_level": {
      "string_value": "Developer",
      "integer_value": 30
    }
  }
]

グループから請求対象メンバーを削除する

グループとそのサブグループおよびプロジェクトから請求対象メンバーを削除します。

削除の対象となるユーザーがグループメンバーである必要はありません。たとえば、ユーザーがグループ内のプロジェクトに直接追加された場合でも、このAPIを使用してユーザーを削除できます。

メンバーの削除は非同期的に処理されるため、変更は数分以内に完了します。

DELETE /groups/:id/billable_members/:user_id
属性必須説明
id整数または文字列はいグループのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/billable_members/:user_id"

グループ内のユーザーのメンバーシップ状態を変更する

グループ内のユーザーのメンバーシップ状態を変更します。

ユーザーが無料ユーザーの制限を超えている場合、グループまたはプロジェクトのユーザーメンバーシップ状態をawaitingまたはactiveに変更すると、ユーザーはそのグループまたはプロジェクトにアクセスできるようになります。この変更は、すべてのサブグループおよびプロジェクトに適用されます。

PUT /groups/:id/members/:user_id/state
属性必須説明
id整数または文字列はいグループのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
state文字列はいユーザーの新しい状態。状態はawaitingactiveのいずれかです。
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/state?state=active"

レスポンス例:

{
  "success":true
}

グループまたはプロジェクトにメンバーを追加する

グループまたはプロジェクトにメンバーを追加します。

POST /groups/:id/members
POST /projects/:id/members
属性必須説明
id整数または文字列はいプロジェクトまたはグループのIDまたはURLエンコードされたパス
user_id整数または文字列はい(usernameが指定されていない場合)新しいメンバーのユーザーID、またはカンマで区切られた複数のID。
username文字列はい(user_idが指定されていない場合)新しいメンバーのユーザー名、またはカンマで区切られた複数のユーザー名。
access_level整数はい有効なアクセスレベル
expires_at文字列いいえYEAR-MONTH-DAY形式の日付文字列。
invite_source文字列いいえメンバー作成プロセスを開始する招待のソース。GitLabのチームメンバーは、この機密情報イシュー(https://gitlab.com/gitlab-org/gitlab/-/issues/327120>)で詳細情報を確認できます。
member_role_id整数いいえUltimateのみ。カスタムメンバーロールのID。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members"
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/projects/:id/members"

レスポンス例:

{
  "id": 1,
  "username": "raymond_smith",
  "name": "Raymond Smith",
  "state": "active",
  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
  "web_url": "http://192.168.1.8:3000/root",
  "created_at": "2012-10-22T14:13:35Z",
  "created_by": {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root"
  },
  "expires_at": "2012-10-22",
  "access_level": 30,
  "email": "john@example.com",
  "group_saml_identity": null
}

ロールのプロモーションに対する管理者の承認が有効になっている場合、既存のユーザーを請求対象のロールにプロモートするメンバーシップリクエストには、管理者による承認が必要です。

Manage Non-Billable Promotions(請求対象でないプロモーションの管理)を有効にするには、最初にenable_member_promotion_managementアプリケーション設定を有効にする必要があります。

単一のユーザーをキューに入れる例:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members"
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/projects/:id/members"
{
  "message":{
    "username_1":"Request queued for administrator approval."
  }
}

複数のユーザーをキューに入れる例:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --data "user_id=1,2&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members"
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --data "user_id=1,2&access_level=30" "https://gitlab.example.com/api/v4/projects/:id/members"
{
  "queued_users": {
    "username_1": "Request queued for administrator approval.",
    "username_2": "Request queued for administrator approval."
  },
  "status": "success"
}

グループまたはプロジェクトのメンバーを編集する

グループまたはプロジェクトのメンバーを更新します。

PUT /groups/:id/members/:user_id
PUT /projects/:id/members/:user_id
属性必須説明
id整数または文字列はいプロジェクトまたはグループのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
access_level整数はい有効なアクセスレベル
expires_at文字列いいえYEAR-MONTH-DAY形式の日付文字列。
member_role_id整数いいえUltimateのみ。カスタムメンバーロールのID。値を指定しない場合は、すべてのロールを削除します。
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id?access_level=40"
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/:id/members/:user_id?access_level=40"

レスポンス例:

{
  "id": 1,
  "username": "raymond_smith",
  "name": "Raymond Smith",
  "state": "active",
  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
  "web_url": "http://192.168.1.8:3000/root",
  "created_at": "2012-10-22T14:13:35Z",
  "created_by": {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root"
  },
  "expires_at": "2012-10-22",
  "access_level": 40,
  "email": "john@example.com",
  "group_saml_identity": null
}

ロールのプロモーションに対する管理者の承認が有効になっている場合、既存のユーザーを請求対象のロールにプロモートするメンバーシップリクエストには、管理者による承認が必要です。

Manage non-billable promotions(請求対象でないプロモーションの管理)を有効にするには、最初にenable_member_promotion_managementアプリケーション設定を有効にする必要があります。

レスポンス例:

{
  "message":{
    "username_1":"Request queued for administrator approval."
  }
}

グループのメンバーにオーバーライドフラグを設定する

デフォルトでは、LDAPグループメンバーのアクセスレベルは、グループ同期を通してLDAPによって指定された値に設定されます。このエンドポイントを呼び出すことで、アクセスレベルのオーバーライドを許可できます。

POST /groups/:id/members/:user_id/override
属性必須説明
id整数または文字列はいグループのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"

レスポンス例:

{
  "id": 1,
  "username": "raymond_smith",
  "name": "Raymond Smith",
  "state": "active",
  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
  "web_url": "http://192.168.1.8:3000/root",
  "created_at": "2012-10-22T14:13:35Z",
  "created_by": {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root"
  },
  "expires_at": "2012-10-22",
  "access_level": 40,
  "email": "john@example.com",
  "override": true
}

グループのメンバーに対するオーバーライドを削除する

オーバーライドフラグをfalseに設定し、LDAPグループ同期が、アクセスレベルをLDAPで指定された値にリセットできるようにします。

DELETE /groups/:id/members/:user_id/override
属性必須説明
id整数または文字列はいグループのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id/override"

レスポンス例:

{
  "id": 1,
  "username": "raymond_smith",
  "name": "Raymond Smith",
  "state": "active",
  "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
  "web_url": "http://192.168.1.8:3000/root",
  "created_at": "2012-10-22T14:13:35Z",
  "created_by": {
    "id": 2,
    "username": "john_doe",
    "name": "John Doe",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",
    "web_url": "http://192.168.1.8:3000/root"
  },
  "expires_at": "2012-10-22",
  "access_level": 40,
  "email": "john@example.com",
  "override": false
}

グループまたはプロジェクトからメンバーを削除する

ユーザーにロールが明示的に割り当てられているグループまたはプロジェクトから、ユーザーを削除します。

削除の対象となるユーザーがグループメンバーである必要があります。たとえば、ユーザーがグループ内のプロジェクトに直接追加されたが、このグループには明示的に追加されていない場合、このAPIを使用してユーザーを削除することはできません。代替アプローチについては、グループから請求対象メンバーを削除するを参照してください。

DELETE /groups/:id/members/:user_id
DELETE /projects/:id/members/:user_id
属性必須説明
id整数または文字列はいプロジェクトまたはグループのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
skip_subresourcesブール値falseサブグループおよびプロジェクトの削除されたメンバーの直接メンバーシップを削除することをスキップするかどうか。デフォルトはfalseです。
unassign_issuablesブール値false特定のグループまたはプロジェクト内で、イシューまたはマージリクエストから、削除されたメンバーの割り当てを解除する必要があるかどうか。デフォルトはfalseです。

リクエストの例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/:user_id"
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/:id/members/:user_id"

グループのメンバーを承認する

グループとそのサブグループおよびプロジェクトに対して、保留中のユーザーを承認します。

PUT /groups/:id/members/:member_id/approve
属性必須説明
id整数または文字列はいトップレベルグループのIDまたはURLエンコードされたパス
member_id整数はいメンバーのID。

リクエストの例:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/:member_id/approve"

グループの保留中のすべてのメンバーを承認する

グループとそのサブグループおよびプロジェクトに対して、保留中のすべてのユーザーを承認します。

POST /groups/:id/members/approve_all
属性必須説明
id整数または文字列はいトップレベルグループのIDまたはURLエンコードされたパス

リクエストの例:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/members/approve_all"

グループとそのサブグループおよびプロジェクトの保留中のメンバーをリストする

グループとそのサブグループおよびプロジェクトについて、awaiting状態のすべてのメンバーと、招待されているがGitLabアカウントを持っていないメンバーのリストを取得します。

前提要件:

  • このAPIエンドポイントは、トップレベルグループでのみ機能します。サブグループでは機能しません。
  • このAPIエンドポイントには、グループのメンバーを管理するための権限が必要です。

このリクエストは、トップレベルグループの階層内のすべてのグループおよびプロジェクトから、一致するすべてのグループメンバーとプロジェクトメンバーを返します。

メンバーがまだGitLabアカウントにサインアップしていない招待ユーザーである場合、招待メールアドレスが返されます。

このAPIエンドポイントは、ページネーションパラメータpageper_pageを受け取り、メンバーのリストを制限します。

GET /groups/:id/pending_members
属性必須説明
id整数または文字列はいグループのIDまたはURLエンコードされたパス
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/:id/pending_members"

レスポンス例:

[
  {
    "id": 168,
    "name": "Alex Garcia",
    "username": "alex_garcia",
    "email": "alex@example.com",
    "avatar_url": "http://example.com/uploads/user/avatar/1/cd8.jpeg",
    "web_url": "http://example.com/alex_garcia",
    "approved": false,
    "invited": false
  },
  {
    "id": 169,
    "email": "sidney@example.com",
    "avatar_url": "http://gravatar.com/../e346561cd8.jpeg",
    "approved": false,
    "invited": true
  },
  {
    "id": 170,
    "email": "zhang@example.com",
    "avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
    "approved": true,
    "invited": true
  }
]

プロジェクトにグループアクセスを付与する

プロジェクトをグループで共有するを参照してください。