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

プロジェクトメンバーAPI

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

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

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

既知の問題

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

プロジェクトのすべての直接メンバーを一覧表示

認証済みユーザーが表示できる、指定されたプロジェクトのすべての直接メンバーを一覧表示します。プロジェクトの全メンバーを一覧表示を使用して、継承されたメンバーを一覧表示します。

この関数は、ページネーションパラメータ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 (レポーター)、25 (セキュリティマネージャー)、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 (レポーター)、25 (セキュリティマネージャー)、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"