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

サービスアカウント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_asccreated_descexpires_ascexpires_desclast_used_asclast_used_descname_ascname_descです。
state文字列いいえ定義されている場合、指定された状態のトークンを返します。使用できる値は、activeinactiveです。

リクエスト例:

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: Unauthorized
  • 404 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_asccreated_descexpires_ascexpires_desclast_used_asclast_used_descname_ascname_descです。
state文字列いいえ定義されている場合、指定された状態のトークンを返します。使用できる値は、activeinactiveです。

リクエスト例:

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: Unauthorized
  • 404 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>"
}