Skip to content

Instantly share code, notes, and snippets.

@buzztaiki
Last active April 25, 2024 00:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save buzztaiki/0f75aa6212f9ba9fc0fd4813ee093fab to your computer and use it in GitHub Desktop.
Save buzztaiki/0f75aa6212f9ba9fc0fd4813ee093fab to your computer and use it in GitHub Desktop.
Azure DevOps の PAT を API で一覧したり更新したり

Azure DevOps の PAT を API で一覧したり更新したり

Manage personal access tokens using API - Azure DevOps | Microsoft Learn の手順を az cli と httpie で書き直しただけ。これを使って Azure Artifacts を操作するサービスアカウントのトークンを定期的に更新とかできる。多分。

API Reference

https://learn.microsoft.com/en-us/rest/api/azure/devops/tokens/pats?view=azure-devops-rest-7.1

一覧

499b84ac-1321-427f-aa17-267ca6975798/.default が Azure DevOps を操作するためのスコープ。

❯❯ http --body --auth-type=bearer \
  --auth="$(az account get-access-token --scope '499b84ac-1321-427f-aa17-267ca6975798/.default' -otsv --query 'accessToken')" \
  'https://vssps.dev.azure.com/sensyn-robotics/_apis/tokens/pats?api-version=7.1-preview.1'

{
    "continuationToken": "",
    "patTokens": [
        {
            "authorizationId": "10070fdf-5f0b-4b58-8f3b-f9e1c1ec1eae",
            "displayName": "local",
            "scope": "vso.packaging",
            "targetAccounts": [
                "87adc412-601d-4d69-bec5-0684405c1c2c"
            ],
            "token": null,
            "validFrom": "2024-04-24T13:08:10.3433333Z",
            "validTo": "2024-05-24T13:07:46.5066667Z"
        }
    ]
}

トークンの期限を更新

❯❯ http --body --auth-type=bearer \
--auth="$(az account get-access-token --scope '499b84ac-1321-427f-aa17-267ca6975798/.default' -otsv --query 'accessToken')" \
PUT 'https://vssps.dev.azure.com/sensyn-robotics/_apis/tokens/pats?api-version=7.1-preview.1' \
authorizationId=10070fdf-5f0b-4b58-8f3b-f9e1c1ec1eae validTo=2024-06-05T15:00:00Z

{
    "patToken": {
        "authorizationId": "10070fdf-5f0b-4b58-8f3b-f9e1c1ec1eae",
        "displayName": "local",
        "scope": "vso.packaging",
        "targetAccounts": [
            "87adc412-601d-4d69-bec5-0684405c1c2c"
        ],
        "token": null,
        "validFrom": "2024-04-24T13:08:10.3433333Z",
        "validTo": "2024-06-05T15:00:00Z"
    },
    "patTokenError": "none"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment