個人アクセストークンAPI

個人アクセストークンの詳細については、こちらをご覧ください。

個人アクセストークン一覧

  • GitLab 13.3 で導入されました
  • 13.6でGitLab UltimateからGitLab Freeへ移行
  • created_after created_before,last_used_after,last_used_before,revoked,search andstate フィルタはGitLab 15.5で導入されました。

認証済みユーザーがアクセスできるすべての個人アクセストークンを取得します。デフォルトでは、フィルタリングされていないリストを返します:

  • 現在のユーザーが管理者以外に作成した個人アクセストークンのみ。
  • 管理者に対するすべての個人アクセストークン。

管理者

  • user_id パラメータを使用して、ユーザーでフィルタリングできます。
  • 全ての個人アクセストークンに対して他のフィルターを使用することができます(GitLab 15.5以降)。

管理者以外

  • user_id さもなければ、401 Unauthorized レスポンスを受け取ります。
  • 自分自身の個人アクセストークンのみをフィルタリングすることができます(GitLab 15.5以降)。
GET /personal_access_tokens
GET /personal_access_tokens?created_after=2022-01-01T00:00:00
GET /personal_access_tokens?created_before=2022-01-01T00:00:00
GET /personal_access_tokens?last_used_after=2022-01-01T00:00:00
GET /personal_access_tokens?last_used_before=2022-01-01T00:00:00
GET /personal_access_tokens?revoked=true
GET /personal_access_tokens?search=name
GET /personal_access_tokens?state=inactive
GET /personal_access_tokens?user_id=1

サポートされる属性:

属性種類必須説明
created_afterdatetime (ISO 8601) {点線円}いいえ指定した時間以降に作成されたPATに結果を限定します。
created_beforedatetime (ISO 8601) {点線円}いいえ指定された時間以前に作成されたPATに結果を制限します。
last_used_afterdatetime (ISO 8601) {点線円}いいえ指定した時間以降に最後に使用されたPATに結果を制限します。
last_used_beforedatetime (ISO 8601) {点線円}いいえ指定された時間以前に最後に使用されたPATに結果を制限します。
revokedboolean {点線円}いいえ指定された無効状態のPATに結果を限定します。有効な値はtrue およびfalseです。
search文字列です。 {点線円}いいえ検索文字列を含む名前のPATに結果を限定します。
state文字列です。 {点線円}いいえ指定された状態のPATに結果を限定します。有効な値はactive およびinactiveです。
user_id整数または文字列。 {点線円}いいえ指定したユーザーが所有するPATに結果を限定します。

リクエストの例

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens"

応答例

[
    {
        "id": 4,
        "name": "Test Token",
        "revoked": false,
        "created_at": "2020-07-23T14:31:47.729Z",
        "scopes": [
            "api"
        ],
        "user_id": 24,
        "last_used_at": "2021-10-06T17:58:37.550Z",
        "active": true,
        "expires_at": null
    }
]

リクエストの例

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens?user_id=3"

応答例

[
    {
        "id": 4,
        "name": "Test Token",
        "revoked": false,
        "created_at": "2020-07-23T14:31:47.729Z",
        "scopes": [
            "api"
        ],
        "user_id": 3,
        "last_used_at": "2021-10-06T17:58:37.550Z",
        "active": true,
        "expires_at": null
    }
]

リクエストの例

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens?revoked=true"

応答例

[
    {
        "id": 41,
        "name": "Revoked Test Token",
        "revoked": true,
        "created_at": "2022-01-01T14:31:47.729Z",
        "scopes": [
            "api"
        ],
        "user_id": 8,
        "last_used_at": "2022-05-18T17:58:37.550Z",
        "active": false,
        "expires_at": null
    }
]

マージされた属性でフィルタできます:

GET /personal_access_tokens?revoked=true&created_before=2022-01-01

単一の個人アクセストークンの取得

個人アクセストークンを取得するには、以下の方法があります:

  • 個人アクセストークンのIDを使用します。
  • ヘッダーでAPIに渡します。

個人アクセストークンIDの使用

GitLab 15.1で導入されました

IDによって単一の個人アクセストークンを取得します。ユーザーは自分のトークンを取得できます。管理者は任意のトークンを取得できます。

GET /personal_access_tokens/:id
属性種類必須説明
id整数/文字列yes個人アクセストークンのID
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/<id>"

回答例

404 GitLab 15.3で導入されたHTTPステータスコードです。

  • 401: Unauthorized もしどちらかが
    • ユーザーが指定された ID のトークンにアクセスできない場合。
    • 指定されたIDのトークンが存在しません。
  • 404: Not Found ユーザーが管理者であるが、指定されたIDのトークンが存在しない場合。

リクエストヘッダの使用

GitLab 15.5 で導入されました

ヘッダでトークンを渡すことで、単一の個人アクセストークンとそのトークンに関する情報を取得します。

GET /personal_access_tokens/self
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/self"

応答例

{
    "id": 4,
    "name": "Test Token",
    "revoked": false,
    "created_at": "2020-07-23T14:31:47.729Z",
    "scopes": [
        "api"
    ],
    "user_id": 3,
    "last_used_at": "2021-10-06T17:58:37.550Z",
    "active": true,
    "expires_at": null
}

個人アクセストークンのローテーション

GitLab 16.0 で導入されました

個人アクセストークンをローテートします。前のトークンを失効させ、1週間後に有効期限が切れる新しいトークンを作成します。

POST /personal_access_tokens/:id/rotate
属性種類必須説明
id整数/文字列yes個人アクセストークンのID
note
非管理者は自分のトークンをローテーションできます。管理者はどのユーザーのトークンもローテーションできます。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/<personal_access_token_id>/rotate"

応答例

{
    "id": 42,
    "name": "Rotated Token",
    "revoked": false,
    "created_at": "2023-08-01T15:00:00.000Z",
    "scopes": ["api"],
    "user_id": 1337,
    "last_used_at": null,
    "active": true,
    "expires_at": "2023-08-15",
    "token": "s3cr3t"
}

回答例

  • 200: OK 既存のトークンが正常に破棄され、新しいトークンが正常に作成された場合。
  • 400: Bad Request ローテーションに成功しなかった場合
  • 401: Unauthorized のどちらかが
    • ユーザーが指定されたIDのトークンにアクセスできない場合。
    • 指定されたIDのトークンが存在しません。
  • 404: Not Found ユーザーが管理者であるが、指定された ID のトークンが存在しない場合。

自動再利用検知

GitLab 16.3で導入されました

ローテートされたトークンごとに、前のトークン、そして今は失効しているトークンが参照されます。この参照の連鎖がトークン・ファミリーを定義します。トークン・ファミリーの中では、最新のトークンのみがアクティビティとなり、他のトークンは全て破棄されます。

トークン・ローテーション・エンドポイントの認証試行で、トークン・ファミリーのトークンが破棄されると、その試行は失敗し、トークン・ファミリーのアクティブなトークンは破棄されます。このメカニズムにより、個人アクセストークンが流出した場合の漏洩を防ぐことができます。

トークンローテーションAPIリクエストでは、自動再利用検知が有効になっています。

個人アクセストークンの取り消し

アクセストークンを失効させるには、以下の方法があります:

  • 個人アクセストークンのIDを使用します。
  • ヘッダーでAPIに渡します。

個人アクセストークンIDの使用

IDを使用して個人アクセストークンを取り消します。

DELETE /personal_access_tokens/:id
属性種類必須説明
id整数/文字列yes個人アクセストークンのID
note
非管理者は、自分のトークンを取り消すことができます。管理者は任意のユーザーのトークンを取り消すことができます。
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/<personal_access_token_id>"

回答例

  • 204: No Content 正常に取り消された場合
  • 400: Bad Request 失効に成功しなかった場合。

リクエストヘッダの使用

  • GitLab 15.0 で導入api スコープのトークンに限定。
  • GitLab 15.4で導入れ、どのトークンもこのエンドポイントを使うことができます。

リクエストヘッダを使って渡された個人アクセストークンを失効させます。必要です:

  • api GitLab 15.0 から GitLab 15.3 のスコープ。
  • GitLab 15.4以降のスコープ。
DELETE /personal_access_tokens/self
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/self"

回答例

  • 204: No Content 正常に取り消された場合
  • 400: Bad Request 失効に成功しなかった場合。

個人アクセストークンの作成(管理者のみ)

個人アクセストークンの作成については、Users APIドキュメントを参照してください。