サービスアカウントAPI
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、サービスアカウントとやり取りします。
作成できるサービスアカウントの数は、サブスクリプションと提供形態によって異なります:
- PremiumとUltimateでは、すべての提供形態で無制限のサービスアカウントを作成できます。
- GitLab Freeでは、提供形態によって制限が異なります:
- GitLab.comでは、各トップレベルグループにつき最大100個のサービスアカウントを作成できます。これには、サブグループまたはプロジェクトで作成されたサービスアカウントが含まれます。
- GitLab Self-Managedでは、インスタンスごとに最大100個のサービスアカウントを作成できます。これには、プロビジョニングされた方法(インスタンス、グループ、またはプロジェクトレベル)に関係なく、すべてのサービスアカウントが含まれます。
サービスアカウントは、ユーザーAPIを通じて操作することもできます。
インスタンスサービスアカウント
- 提供形態: GitLab Self-Managed、GitLab Dedicated
インスタンスサービスアカウントはGitLabインスタンス全体で利用できますが、人間のユーザーと同様にグループやプロジェクトに追加する必要があります。
インスタンスサービスアカウントのパーソナルアクセストークンを管理するには、パーソナルアクセストークンAPIを使用します。
前提条件:
- インスタンスへの管理者アクセス権が必要です。
すべてのインスタンスサービスアカウントをリストする
すべてのインスタンスサービスアカウントをリストします。
結果をフィルタリングするには、pageおよびper_page ページネーションパラメータを使用します。
GET /service_accountsサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
order_by | 文字列 | いいえ | 結果の並び替えに使用する属性。指定可能な値: idまたはusername。デフォルト値: id。 |
sort | 文字列 | いいえ | 結果をソートする方向。指定可能な値: descまたはasc。デフォルト値: desc。 |
リクエスト例:
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/service_accounts"レスポンス例:
[
{
"id": 114,
"username": "service_account_33",
"name": "Service account user"
},
{
"id": 137,
"username": "service_account_34",
"name": "john doe"
}
]インスタンスサービスアカウントを作成する
インスタンスサービスアカウントを作成します。
POST /service_accounts
POST /service_accounts?email=custom_email@gitlab.example.comサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
name | 文字列 | いいえ | ユーザーの名前。設定されていない場合、Service account userを使用します。 |
username | 文字列 | いいえ | ユーザーアカウントのユーザー名。未定義の場合、service_account_で始まる名前が生成されます。 |
email | 文字列 | いいえ | ユーザーアカウントのメールアドレス。未定義の場合、返信不可のメールアドレスが生成されます。カスタムメールアドレスは、メール確認設定がオフになっていない限り、確認が必要です。 |
リクエスト例:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/service_accounts"レスポンス例:
{
"id": 57,
"username": "service_account_6018816a18e515214e0c34c2b33523fc",
"name": "Service account user",
"email": "service_account_6018816a18e515214e0c34c2b33523fc@noreply.gitlab.example.com"
}email属性によって定義されたメールアドレスが他のユーザーによって既に使用されている場合、400 Bad requestエラーが返されます。
インスタンスサービスアカウントを更新する
指定されたインスタンスサービスアカウントを更新します。
PATCH /service_accounts/:idパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数 | はい | サービスアカウントのID。 |
name | 文字列 | いいえ | ユーザーの名前。 |
username | 文字列 | いいえ | ユーザーアカウントのユーザー名。 |
email | 文字列 | いいえ | ユーザーアカウントのメールアドレス。カスタムメールアドレスは、メール確認設定がオフになっていない限り、確認が必要です。 |
リクエスト例:
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/service_accounts/57" --data "name=Updated Service Account&email=updated_email@example.com"レスポンス例:
{
"id": 57,
"username": "service_account_6018816a18e515214e0c34c2b33523fc",
"name": "Updated Service Account",
"email": "service_account_<random_hash>@noreply.gitlab.example.com",
"unconfirmed_email": "custom_email@example.com"
}グループサービスアカウント
グループサービスアカウントは特定のグループによって所有され、作成されたグループ、または子孫のサブグループやプロジェクトに招待できます。祖先グループには招待できません。
前提条件:
- GitLab.comでは、グループのオーナーロールが必要です。
- GitLab Self-ManagedまたはGitLab Dedicatedでは、次のいずれかが必要です:
- インスタンスの管理者である。
- グループでオーナーロールを持ち、サービスアカウントの作成が許可されていること。
すべてのグループサービスアカウントをリストする
指定されたグループ内のすべてのサービスアカウントをリストします。
結果をフィルタリングするには、pageおよびper_page ページネーションパラメータを使用します。
GET /groups/:id/service_accountsパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットグループのIDまたはURLエンコードされたパス。 |
order_by | 文字列 | いいえ | ユーザーのリストをusernameまたはidで並べ替えます。デフォルトはidです。 |
sort | 文字列 | いいえ | ascまたはdescによるソートを指定します。デフォルトはdescです。 |
リクエスト例:
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/345/service_accounts"レスポンス例:
[
{
"id": 57,
"username": "service_account_group_345_<random_hash>",
"name": "Service account user",
"email": "service_account_group_345_<random_hash>@noreply.gitlab.example.com"
},
{
"id": 58,
"username": "service_account_group_345_<random_hash>",
"name": "Service account user",
"email": "service_account_group_345_<random_hash>@noreply.gitlab.example.com",
"unconfirmed_email": "custom_email@example.com"
}
]グループサービスアカウントを作成する
指定されたグループ内にサービスアカウントを作成します。
POST /groups/:id/service_accountsサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | グループのIDまたはURLエンコードされたパス。 |
name | 文字列 | いいえ | ユーザーアカウント名。指定されていない場合、Service account userを使用します。 |
username | 文字列 | いいえ | ユーザーアカウントのユーザー名。指定されていない場合、service_account_group_で始まる名前が生成されます。 |
email | 文字列 | いいえ | ユーザーアカウントのメールアドレス。指定されていない場合、service_account_group_で始まるメールアドレスが生成されます。カスタムメールアドレスは、グループが一致する検証済みドメインを持つか、メール確認設定がオフになっていない限り、確認が必要です。 |
リクエスト例:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/345/service_accounts" --data "email=custom_email@example.com"レスポンス例:
{
"id": 57,
"username": "service_account_group_345_6018816a18e515214e0c34c2b33523fc",
"name": "Service account user",
"email": "custom_email@example.com"
}グループサービスアカウントを更新する
指定されたグループ内のサービスアカウントを更新します。
- 複合IDに関連付けられたサービスアカウントのユーザー名は更新できません。
PATCH /groups/:id/service_accounts/:user_idパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットグループのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
name | 文字列 | いいえ | ユーザーの名前。 |
username | 文字列 | いいえ | ユーザーのユーザー名。 |
email | 文字列 | いいえ | ユーザーアカウントのメールアドレス。カスタムメールアドレスは、グループが一致する検証済みドメインを持つか、メール確認設定がオフになっていない限り、確認が必要です。 |
リクエスト例:
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/345/service_accounts/57" --data "name=Updated Service Account&email=updated_email@example.com"レスポンス例:
{
"id": 57,
"username": "service_account_group_345_6018816a18e515214e0c34c2b33523fc",
"name": "Updated Service Account",
"email": "service_account_group_345_<random_hash>@noreply.gitlab.example.com",
"unconfirmed_email": "custom_email@example.com"
}グループサービスアカウントを削除する
指定されたグループからサービスアカウントを削除します。
DELETE /groups/:id/service_accounts/:user_idパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットグループのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
hard_delete | ブール値 | いいえ | trueの場合、通常ゴーストユーザーにコントリビュートが移動される代わりに、コントリビュートが削除されます。また、このサービスアカウントのみが所有するグループも削除されます。 |
リクエスト例:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/345/service_accounts/181"グループサービスアカウントのすべてのパーソナルアクセストークンをリストする
指定されたグループ内のサービスアカウントのすべてのパーソナルアクセストークンをリストします。
GET /groups/:id/service_accounts/:user_id/personal_access_tokensサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | グループのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
created_after | 日時(ISO 8601) | いいえ | 定義されている場合、指定された時刻より後に作成されたトークンを返します。 |
created_before | 日時(ISO 8601) | いいえ | 定義されている場合、指定された時刻より前に作成されたトークンを返します。 |
expires_after | 日付(ISO 8601) | いいえ | 定義されている場合、指定された時刻より後に有効期限が切れるトークンを返します。 |
expires_before | 日付(ISO 8601) | いいえ | 定義されている場合、指定された時刻より前に有効期限が切れるトークンを返します。 |
last_used_after | 日時(ISO 8601) | いいえ | 定義されている場合、指定された時刻より後に最終使用されたトークンを返します。 |
last_used_before | 日時(ISO 8601) | いいえ | 定義されている場合、指定された時刻より前に最終使用されたトークンを返します。 |
revoked | ブール値 | いいえ | trueの場合、失効したトークンのみを返します。 |
search | 文字列 | いいえ | 定義されている場合、指定された値が名前に含まれたトークンを返します。 |
sort | 文字列 | いいえ | 定義されている場合、指定された値で結果を並べ替えます。使用できる値は、created_asc、created_desc、expires_asc、expires_desc、last_used_asc、last_used_desc、name_asc、name_descです。 |
state | 文字列 | いいえ | 定義されている場合、指定された状態のトークンを返します。使用できる値は、activeとinactiveです。 |
リクエスト例:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/187/service_accounts/195/personal_access_tokens?sort=id_desc&search=token2b&created_before=2025-03-27"レスポンス例:
[
{
"id": 187,
"name": "service_accounts_token2b",
"revoked": false,
"created_at": "2025-03-26T14:42:51.084Z",
"description": null,
"scopes": [
"api"
],
"user_id": 195,
"last_used_at": null,
"active": true,
"expires_at": null
}
]失敗した応答の例:
401: Unauthorized404 Group Not Found
グループサービスアカウントのパーソナルアクセストークンを作成する
指定されたグループ内の既存のサービスアカウントのパーソナルアクセストークンを作成します。
POST /groups/:id/service_accounts/:user_id/personal_access_tokensパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | グループのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
name | 文字列 | はい | パーソナルアクセストークンの名前。 |
description | 文字列 | いいえ | パーソナルアクセストークンの説明。 |
scopes | 配列 | はい | 承認されたスコープの配列。指定可能な値のリストについては、パーソナルアクセストークンのスコープを参照してください。 |
expires_at | 日付 | いいえ | ISO形式(YYYY-MM-DD)のアクセストークンの有効期限。指定されていない場合、日付は最大許容ライフタイム制限に設定されます。 |
リクエスト例:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/35/service_accounts/71/personal_access_tokens" --data "scopes[]=api,read_user,read_repository" --data "name=service_accounts_token"レスポンス例:
{
"id":6,
"name":"service_accounts_token",
"revoked":false,
"created_at":"2023-06-13T07:47:13.900Z",
"scopes":["api"],
"user_id":71,
"last_used_at":null,
"active":true,
"expires_at":"2024-06-12",
"token":"<token_value>"
}グループサービスアカウントのパーソナルアクセストークンを失効する
指定されたグループ内の既存のサービスアカウントの指定されたパーソナルアクセストークンを失効します。
DELETE /groups/:id/service_accounts/:user_id/personal_access_tokens/:token_idパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットグループのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
token_id | 整数 | はい | トークンのID。 |
リクエスト例:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/35/service_accounts/71/personal_access_tokens/6"成功した場合、204: No Contentを返します。
その他の発生しうる応答:
- 正常に失効しなかった場合は
400: Bad Request。 - リクエストが承認されていない場合は
401: Unauthorized。 - リクエストが許可されていない場合は
403: Forbidden。 - アクセストークンが存在しない場合は
404: Not Found。
グループサービスアカウントのパーソナルアクセストークンをローテーションする
指定されたグループ内の既存のサービスアカウントの指定されたパーソナルアクセストークンをローテーションします。これにより、既存のトークンを失効し、同じ名前、説明、スコープを持つ新しいトークンが作成されます。
POST /groups/:id/service_accounts/:user_id/personal_access_tokens/:token_id/rotateパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットグループのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
token_id | 整数 | はい | トークンのID。 |
expires_at | 日付 | いいえ | ISO形式(YYYY-MM-DD)のアクセストークンの有効期限。GitLab 17.9で導入されました。トークンに有効期限が必要な場合、デフォルトは1週間です。不要な場合、デフォルトは最大許容ライフタイム制限になります。 |
リクエスト例:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/35/service_accounts/71/personal_access_tokens/6/rotate"レスポンス例:
{
"id":7,
"name":"service_accounts_token",
"revoked":false,
"created_at":"2023-06-13T07:54:49.962Z",
"scopes":["api"],
"user_id":71,
"last_used_at":null,
"active":true,
"expires_at":"2023-06-20",
"token":"<token_value>"
}プロジェクトサービスアカウント
プロジェクトサービスアカウントは特定のプロジェクトによって所有され、関連付けられたプロジェクトのみで利用できます。
前提条件:
- GitLab.comでは、プロジェクトのオーナーまたはメンテナーロールが必要です。
- GitLab Self-ManagedまたはGitLab Dedicatedでは、次のいずれかが必要です:
- インスタンスの管理者である。
- プロジェクトでオーナーまたはメンテナーロールを持っていること。
すべてのプロジェクトサービスアカウントをリストする
指定されたプロジェクト内のすべてのサービスアカウントをリストします。
結果をフィルタリングするには、pageおよびper_page ページネーションパラメータを使用します。
GET /projects/:id/service_accountsパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットプロジェクトのIDまたはURLエンコードされたパス。 |
order_by | 文字列 | いいえ | ユーザーのリストをusernameまたはidで並べ替えます。デフォルトはidです。 |
sort | 文字列 | いいえ | ascまたはdescによるソートを指定します。デフォルトはdescです。 |
リクエスト例:
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/345/service_accounts"レスポンス例:
[
{
"id": 57,
"username": "service_account_project_345_<random_hash>",
"name": "Service account user",
"email": "service_account_project_345_<random_hash>@noreply.gitlab.example.com"
},
{
"id": 58,
"username": "service_account_project_345_<random_hash>",
"name": "Service account user",
"email": "service_account_project_345_<random_hash>@noreply.gitlab.example.com",
"unconfirmed_email": "custom_email@example.com"
}
]プロジェクトサービスアカウントを作成する
指定されたプロジェクト内にサービスアカウントを作成します。
POST /projects/:id/service_accountsサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス |
name | 文字列 | いいえ | ユーザーアカウント名。指定されていない場合、Service account userを使用します。 |
username | 文字列 | いいえ | ユーザーアカウントのユーザー名。指定されていない場合、service_account_project_で始まる名前が生成されます。 |
email | 文字列 | いいえ | ユーザーアカウントのメールアドレス。指定されていない場合、service_account_project_で始まるメールアドレスが生成されます。カスタムメールアドレスは、グループが一致する検証済みドメインを持つか、メール確認設定がオフになっていない限り、確認が必要です。 |
リクエスト例:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/345/service_accounts" --data "email=custom_email@example.com"レスポンス例:
{
"id": 57,
"username": "service_account_project_345_6018816a18e515214e0c34c2b33523fc",
"name": "Service account user",
"email": "custom_email@example.com"
}プロジェクトサービスアカウントを更新する
指定されたプロジェクト内のサービスアカウントを更新します。
PATCH /projects/:id/service_accounts/:user_idパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットプロジェクトのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
name | 文字列 | いいえ | ユーザーの名前。 |
username | 文字列 | いいえ | ユーザーのユーザー名。 |
email | 文字列 | いいえ | ユーザーアカウントのメールアドレス。カスタムメールアドレスは、グループが一致する検証済みドメインを持つか、メール確認設定がオフになっていない限り、確認が必要です。 |
リクエスト例:
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/345/service_accounts/57" --data "name=Updated Service Account&email=updated_email@example.com"レスポンス例:
{
"id": 57,
"username": "service_account_project_345_6018816a18e515214e0c34c2b33523fc",
"name": "Updated Service Account",
"email": "service_account_project_345_<random_hash>@noreply.gitlab.example.com",
"unconfirmed_email": "custom_email@example.com"
}プロジェクトサービスアカウントを削除する
指定されたプロジェクトからサービスアカウントを削除します。
DELETE /projects/:id/service_accounts/:user_idパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットプロジェクトのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
hard_delete | ブール値 | いいえ | trueの場合、通常ゴーストユーザーにコントリビュートが移動される代わりに、コントリビュートが削除されます。また、このサービスアカウントのみが所有するグループも削除されます。 |
リクエスト例:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/345/service_accounts/181"プロジェクトサービスアカウントのすべてのパーソナルアクセストークンをリストする
プロジェクト内のサービスアカウントのすべてのパーソナルアクセストークンをリストします。
GET /projects/:id/service_accounts/:user_id/personal_access_tokensサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
created_after | 日時(ISO 8601) | いいえ | 定義されている場合、指定された時刻より後に作成されたトークンを返します。 |
created_before | 日時(ISO 8601) | いいえ | 定義されている場合、指定された時刻より前に作成されたトークンを返します。 |
expires_after | 日付(ISO 8601) | いいえ | 定義されている場合、指定された時刻より後に有効期限が切れるトークンを返します。 |
expires_before | 日付(ISO 8601) | いいえ | 定義されている場合、指定された時刻より前に有効期限が切れるトークンを返します。 |
last_used_after | 日時(ISO 8601) | いいえ | 定義されている場合、指定された時刻より後に最終使用されたトークンを返します。 |
last_used_before | 日時(ISO 8601) | いいえ | 定義されている場合、指定された時刻より前に最終使用されたトークンを返します。 |
revoked | ブール値 | いいえ | trueの場合、失効したトークンのみを返します。 |
search | 文字列 | いいえ | 定義されている場合、指定された値が名前に含まれたトークンを返します。 |
sort | 文字列 | いいえ | 定義されている場合、指定された値で結果を並べ替えます。使用できる値は、created_asc、created_desc、expires_asc、expires_desc、last_used_asc、last_used_desc、name_asc、name_descです。 |
state | 文字列 | いいえ | 定義されている場合、指定された状態のトークンを返します。使用できる値は、activeとinactiveです。 |
リクエスト例:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/187/service_accounts/195/personal_access_tokens?sort=id_desc&search=token2b&created_before=2025-03-27"レスポンス例:
[
{
"id": 187,
"name": "service_accounts_token2b",
"revoked": false,
"created_at": "2025-03-26T14:42:51.084Z",
"description": null,
"scopes": [
"api"
],
"user_id": 195,
"last_used_at": null,
"active": true,
"expires_at": null
}
]失敗した応答の例:
401: Unauthorized404 Project Not Found
プロジェクトサービスアカウントのパーソナルアクセストークンを作成する
指定されたプロジェクト内の既存のサービスアカウントのパーソナルアクセストークンを作成します。
POST /projects/:id/service_accounts/:user_id/personal_access_tokensパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
name | 文字列 | はい | パーソナルアクセストークンの名前。 |
description | 文字列 | いいえ | パーソナルアクセストークンの説明。 |
scopes | 配列 | はい | 承認されたスコープの配列。指定可能な値のリストについては、パーソナルアクセストークンのスコープを参照してください。 |
expires_at | 日付 | いいえ | ISO形式(YYYY-MM-DD)のアクセストークンの有効期限。指定されていない場合、日付は最大許容ライフタイム制限に設定されます。 |
リクエスト例:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/35/service_accounts/71/personal_access_tokens" --data "scopes[]=api,read_user,read_repository" --data "name=service_accounts_token"レスポンス例:
{
"id":6,
"name":"service_accounts_token",
"revoked":false,
"created_at":"2023-06-13T07:47:13.900Z",
"scopes":["api"],
"user_id":71,
"last_used_at":null,
"active":true,
"expires_at":"2024-06-12",
"token":"<token_value>"
}プロジェクトサービスアカウントのパーソナルアクセストークンを失効する
指定されたプロジェクト内の既存のサービスアカウントのパーソナルアクセストークンを失効します。
DELETE /projects/:id/service_accounts/:user_id/personal_access_tokens/:token_idパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットプロジェクトのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
token_id | 整数 | はい | トークンのID。 |
リクエスト例:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/35/service_accounts/71/personal_access_tokens/6"成功した場合、204: No Contentを返します。
その他の発生しうる応答:
- 正常に失効しなかった場合は
400: Bad Request。 - リクエストが承認されていない場合は
401: Unauthorized。 - リクエストが許可されていない場合は
403: Forbidden。 - アクセストークンが存在しない場合は
404: Not Found。
プロジェクトサービスアカウントのパーソナルアクセストークンをローテーションする
指定されたプロジェクト内の既存のサービスアカウントのパーソナルアクセストークンをローテーションします。これにより、1週間有効な新しいトークンが作成され、既存のトークンはすべて失効します。
POST /projects/:id/service_accounts/:user_id/personal_access_tokens/:token_id/rotateパラメータは以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | ターゲットプロジェクトのIDまたはURLエンコードされたパス。 |
user_id | 整数 | はい | サービスアカウントのID。 |
token_id | 整数 | はい | トークンのID。 |
expires_at | 日付 | いいえ | ISO形式(YYYY-MM-DD)のアクセストークンの有効期限。GitLab 17.9で導入されました。トークンに有効期限が必要な場合、デフォルトは1週間です。不要な場合、デフォルトは最大許容ライフタイム制限になります。 |
リクエスト例:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/35/service_accounts/71/personal_access_tokens/6/rotate"レスポンス例:
{
"id":7,
"name":"service_accounts_token",
"revoked":false,
"created_at":"2023-06-13T07:54:49.962Z",
"scopes":["api"],
"user_id":71,
"last_used_at":null,
"active":true,
"expires_at":"2023-06-20",
"token":"<token_value>"
}