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

プロジェクトメンバーAPI

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

このエンドポイントを使用して、プロジェクトメンバーとやり取りします。

グループメンバーについては、グループメンバーAPIを参照してください。

既知の問題

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

プロジェクトのすべてのメンバーをリスト表示する

認証済みユーザーが表示できるプロジェクトメンバーのリストを取得します。

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

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/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,
    "is_using_seat": true
  },
  {
    "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 /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/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 /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/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}' \
  --url "https://gitlab.example.com/api/v4/projects/<project_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 /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/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
}

プロジェクトにメンバーを追加する

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

グループにプロジェクトへのアクセス権を付与するには、グループとプロジェクトを共有するを参照してください。

POST /projects/:id/members
属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
user_id整数または文字列はい(usernameが指定されていない場合)新しいメンバーのユーザーID、またはカンマで区切られた複数のID。
username文字列はい(user_idが指定されていない場合)新しいメンバーのユーザー名、またはカンマで区切られた複数のユーザー名。
access_level整数はい有効なアクセスレベル使用可能な値: 0(アクセス権なし)、5(最小アクセス)、10(ゲスト)、15(プランナー)、20(レポーター)、30(デベロッパー)、40(メンテナー)、または50(オーナー)。デフォルトは30です。
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" \
     --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-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
}

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

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

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --data "user_id=1&access_level=30" \
     --url "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" \
     --url "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 /projects/:id/members/:user_id
属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
user_id整数はいメンバーのユーザーID。
access_level整数はい有効なアクセスレベル使用可能な値: 0(アクセス権なし)、5(最小アクセス)、10(ゲスト)、15(プランナー)、20(レポーター)、30(デベロッパー)、40(メンテナー)、または50(オーナー)。デフォルトは30です。
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/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
}

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

レスポンス例:

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

プロジェクトからメンバーを削除する

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

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

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/projects/:id/members/:user_id"