diff --git a/config/_default/menus/api.en.yaml b/config/_default/menus/api.en.yaml
index c7498a5b5b9..8669a0c298c 100644
--- a/config/_default/menus/api.en.yaml
+++ b/config/_default/menus/api.en.yaml
@@ -1148,6 +1148,66 @@ menu:
url: /api/latest/key-management/
identifier: key-management
generated: true
+ - name: Update a personal access token
+ url: '#update-a-personal-access-token'
+ identifier: key-management-update-a-personal-access-token
+ parent: key-management
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - UpdatePersonalAccessToken
+ unstable: []
+ order: 18
+ - name: Get a personal access token
+ url: '#get-a-personal-access-token'
+ identifier: key-management-get-a-personal-access-token
+ parent: key-management
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - GetPersonalAccessToken
+ unstable: []
+ order: 17
+ - name: Revoke a personal access token
+ url: '#revoke-a-personal-access-token'
+ identifier: key-management-revoke-a-personal-access-token
+ parent: key-management
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - RevokePersonalAccessToken
+ unstable: []
+ order: 19
+ - name: Create a personal access token
+ url: '#create-a-personal-access-token'
+ identifier: key-management-create-a-personal-access-token
+ parent: key-management
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - CreatePersonalAccessToken
+ unstable: []
+ order: 15
+ - name: Get all personal access tokens
+ url: '#get-all-personal-access-tokens'
+ identifier: key-management-get-all-personal-access-tokens
+ parent: key-management
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - ListPersonalAccessTokens
+ unstable: []
+ order: 16
- name: Edit an application key owned by current user
url: '#edit-an-application-key-owned-by-current-user'
identifier: key-management-edit-an-application-key-owned-by-current-user
@@ -13152,6 +13212,66 @@ menu:
- ListServiceAccountApplicationKeys
unstable: []
order: 2
+ - name: Update an access token for a service account
+ url: '#update-an-access-token-for-a-service-account'
+ identifier: service-accounts-update-an-access-token-for-a-service-account
+ parent: service-accounts
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - UpdateServiceAccountAccessToken
+ unstable: []
+ order: 10
+ - name: Get an access token for a service account
+ url: '#get-an-access-token-for-a-service-account'
+ identifier: service-accounts-get-an-access-token-for-a-service-account
+ parent: service-accounts
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - GetServiceAccountAccessToken
+ unstable: []
+ order: 9
+ - name: Revoke an access token for a service account
+ url: '#revoke-an-access-token-for-a-service-account'
+ identifier: service-accounts-revoke-an-access-token-for-a-service-account
+ parent: service-accounts
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - RevokeServiceAccountAccessToken
+ unstable: []
+ order: 11
+ - name: Create an access token for a service account
+ url: '#create-an-access-token-for-a-service-account'
+ identifier: service-accounts-create-an-access-token-for-a-service-account
+ parent: service-accounts
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - CreateServiceAccountAccessToken
+ unstable: []
+ order: 8
+ - name: List access tokens for a service account
+ url: '#list-access-tokens-for-a-service-account'
+ identifier: service-accounts-list-access-tokens-for-a-service-account
+ parent: service-accounts
+ generated: true
+ params:
+ versions:
+ - v2
+ operationids:
+ - ListServiceAccountAccessTokens
+ unstable: []
+ order: 7
- name: Create a service account
url: '#create-a-service-account'
identifier: service-accounts-create-a-service-account
diff --git a/content/en/api/v2/key-management/examples.json b/content/en/api/v2/key-management/examples.json
index 5cf557612c2..3b86e51c0d1 100644
--- a/content/en/api/v2/key-management/examples.json
+++ b/content/en/api/v2/key-management/examples.json
@@ -1538,5 +1538,346 @@
},
"html": "
\n
\n
\n
\n
\n
Object used to update an application key.
\n
\n
\n
\n
\n
\n
attributes [required]
\n
\n
\n
Attributes used to update an application Key.
\n
\n
\n
\n
\n
\n
\n
Name of the application key.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes to grant the application key.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the application key.
\n
\n \n
\n
\n
\n
\n
\n
\n
Application Keys resource type. \nAllowed enum values: application_keys
default: application_keys
\n
\n \n
\n
\n
\n
"
}
+ },
+ "ListPersonalAccessTokens": {
+ "responses": {
+ "200": {
+ "json": {
+ "data": [
+ {
+ "attributes": {
+ "alias": "2H9MCNMBM8FQjQ16YucXkX",
+ "created_at": "2024-01-01T00:00:00+00:00",
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "last_used_at": "2025-06-15T12:30:00+00:00",
+ "modified_at": "2024-06-01T00:00:00+00:00",
+ "name": "My Personal Access Token",
+ "public_portion": "ddpat_abc123",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "string",
+ "relationships": {
+ "owned_by": {
+ "data": {
+ "id": "00000000-0000-0000-2345-000000000000",
+ "type": "users"
+ }
+ }
+ },
+ "type": "personal_access_tokens"
+ }
+ ],
+ "meta": {
+ "page": {
+ "total_filtered_count": "integer"
+ }
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Array of personal access tokens.
\n
\n
\n
\n
\n
\n
\n
Attributes of a personal access token.
\n
\n
\n
\n
\n
\n
\n
The alias (short identifier) of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Creation date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Expiration date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date the personal access token was last used.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date of last modification of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The public portion of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes granted to the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Resources related to the personal access token.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Relationship to user object.
\n
\n
\n
\n
\n
\n
\n
A unique identifier that represents the user.
\n
\n \n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Additional information related to the personal access token response.
\n
\n
\n
\n
\n
\n
\n
\n
\n
total_filtered_count
\n
\n
\n
Total filtered personal access token count.
\n
\n \n
\n
\n
\n
\n
\n
"
+ },
+ "400": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {},
+ "json": {},
+ "html": ""
+ }
+ },
+ "CreatePersonalAccessToken": {
+ "responses": {
+ "201": {
+ "json": {
+ "data": {
+ "attributes": {
+ "alias": "2H9MCNMBM8FQjQ16YucXkX",
+ "created_at": "2024-01-01T00:00:00+00:00",
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "key": "string",
+ "name": "My Personal Access Token",
+ "public_portion": "ddpat_abc123",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "string",
+ "relationships": {
+ "owned_by": {
+ "data": {
+ "id": "00000000-0000-0000-2345-000000000000",
+ "type": "users"
+ }
+ }
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Datadog personal access token, including the token key.
\n
\n
\n
\n
\n
\n
\n
Attributes of a full personal access token, including the token key.
\n
\n
\n
\n
\n
\n
\n
The alias (short identifier) of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Creation date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Expiration date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The personal access token key. Only returned upon creation.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The public portion of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes granted to the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Resources related to the personal access token.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Relationship to user object.
\n
\n
\n
\n
\n
\n
\n
A unique identifier that represents the user.
\n
\n \n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ },
+ "400": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {
+ "data": {
+ "attributes": {
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "name": "My Personal Access Token",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "json": {
+ "data": {
+ "attributes": {
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "name": "My Personal Access Token",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Object used to create a personal access token.
\n
\n
\n
\n
\n
\n
attributes [required]
\n
\n
\n
Attributes used to create a personal access token.
\n
\n
\n
\n
\n
\n
expires_at [required]
\n
\n
\n
Expiration date of the personal access token. Must be at least 24 hours in the future.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes to grant the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ }
+ },
+ "RevokePersonalAccessToken": {
+ "responses": {
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "404": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {},
+ "json": {},
+ "html": ""
+ }
+ },
+ "GetPersonalAccessToken": {
+ "responses": {
+ "200": {
+ "json": {
+ "data": {
+ "attributes": {
+ "alias": "2H9MCNMBM8FQjQ16YucXkX",
+ "created_at": "2024-01-01T00:00:00+00:00",
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "last_used_at": "2025-06-15T12:30:00+00:00",
+ "modified_at": "2024-06-01T00:00:00+00:00",
+ "name": "My Personal Access Token",
+ "public_portion": "ddpat_abc123",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "string",
+ "relationships": {
+ "owned_by": {
+ "data": {
+ "id": "00000000-0000-0000-2345-000000000000",
+ "type": "users"
+ }
+ }
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Datadog personal access token.
\n
\n
\n
\n
\n
\n
\n
Attributes of a personal access token.
\n
\n
\n
\n
\n
\n
\n
The alias (short identifier) of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Creation date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Expiration date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date the personal access token was last used.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date of last modification of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The public portion of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes granted to the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Resources related to the personal access token.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Relationship to user object.
\n
\n
\n
\n
\n
\n
\n
A unique identifier that represents the user.
\n
\n \n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ },
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "404": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {},
+ "json": {},
+ "html": ""
+ }
+ },
+ "UpdatePersonalAccessToken": {
+ "responses": {
+ "200": {
+ "json": {
+ "data": {
+ "attributes": {
+ "alias": "2H9MCNMBM8FQjQ16YucXkX",
+ "created_at": "2024-01-01T00:00:00+00:00",
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "last_used_at": "2025-06-15T12:30:00+00:00",
+ "modified_at": "2024-06-01T00:00:00+00:00",
+ "name": "My Personal Access Token",
+ "public_portion": "ddpat_abc123",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "string",
+ "relationships": {
+ "owned_by": {
+ "data": {
+ "id": "00000000-0000-0000-2345-000000000000",
+ "type": "users"
+ }
+ }
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Datadog personal access token.
\n
\n
\n
\n
\n
\n
\n
Attributes of a personal access token.
\n
\n
\n
\n
\n
\n
\n
The alias (short identifier) of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Creation date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Expiration date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date the personal access token was last used.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date of last modification of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The public portion of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes granted to the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Resources related to the personal access token.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Relationship to user object.
\n
\n
\n
\n
\n
\n
\n
A unique identifier that represents the user.
\n
\n \n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ },
+ "400": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "404": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {
+ "data": {
+ "attributes": {},
+ "id": "00112233-4455-6677-8899-aabbccddeeff",
+ "type": "personal_access_tokens"
+ }
+ },
+ "json": {
+ "data": {
+ "attributes": {
+ "name": "Updated Personal Access Token",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "00112233-4455-6677-8899-aabbccddeeff",
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Object used to update a personal access token.
\n
\n
\n
\n
\n
\n
attributes [required]
\n
\n
\n
Attributes used to update a personal access token.
\n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes to grant the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ }
}
}
\ No newline at end of file
diff --git a/content/en/api/v2/key-management/request.CreatePersonalAccessToken.json b/content/en/api/v2/key-management/request.CreatePersonalAccessToken.json
new file mode 100644
index 00000000000..ec988dabfd6
--- /dev/null
+++ b/content/en/api/v2/key-management/request.CreatePersonalAccessToken.json
@@ -0,0 +1,12 @@
+{
+ "data": {
+ "type": "personal_access_tokens",
+ "attributes": {
+ "name": "Example-Personal-Access-Token",
+ "scopes": [
+ "dashboards_read"
+ ],
+ "expires_at": "2022-11-11T11:11:11+00:00"
+ }
+ }
+}
\ No newline at end of file
diff --git a/content/en/api/v2/key-management/request.UpdatePersonalAccessToken.json b/content/en/api/v2/key-management/request.UpdatePersonalAccessToken.json
new file mode 100644
index 00000000000..71b3469c17e
--- /dev/null
+++ b/content/en/api/v2/key-management/request.UpdatePersonalAccessToken.json
@@ -0,0 +1,9 @@
+{
+ "data": {
+ "type": "personal_access_tokens",
+ "id": "string",
+ "attributes": {
+ "name": "Example-Personal-Access-Token-updated"
+ }
+ }
+}
\ No newline at end of file
diff --git a/content/en/api/v2/service-accounts/examples.json b/content/en/api/v2/service-accounts/examples.json
index 81cda4deab6..8c4ffd98ad1 100644
--- a/content/en/api/v2/service-accounts/examples.json
+++ b/content/en/api/v2/service-accounts/examples.json
@@ -132,6 +132,362 @@
"html": "\n
\n
\n
\n
\n
Object to create a service account User.
\n
\n
\n
\n
\n
\n
attributes [required]
\n
\n
\n
Attributes of the created user.
\n
\n
\n
\n
\n
\n
service_account [required]
\n
\n
\n
Whether the user is a service account. Must be true.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Relationships of the user object.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
An array containing type and the unique identifier of a role.
\n
\n
\n
\n
\n
\n
\n
The unique identifier of the role.
\n
\n \n
\n
\n
\n
\n
\n
\n
Roles type. \nAllowed enum values: roles
default: roles
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
"
}
},
+ "ListServiceAccountAccessTokens": {
+ "responses": {
+ "200": {
+ "json": {
+ "data": [
+ {
+ "attributes": {
+ "alias": "2H9MCNMBM8FQjQ16YucXkX",
+ "created_at": "2024-01-01T00:00:00+00:00",
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "last_used_at": "2025-06-15T12:30:00+00:00",
+ "modified_at": "2024-06-01T00:00:00+00:00",
+ "name": "My Personal Access Token",
+ "public_portion": "ddpat_abc123",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "string",
+ "relationships": {
+ "owned_by": {
+ "data": {
+ "id": "00000000-0000-0000-2345-000000000000",
+ "type": "users"
+ }
+ }
+ },
+ "type": "personal_access_tokens"
+ }
+ ],
+ "meta": {
+ "page": {
+ "total_filtered_count": "integer"
+ }
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Array of personal access tokens.
\n
\n
\n
\n
\n
\n
\n
Attributes of a personal access token.
\n
\n
\n
\n
\n
\n
\n
The alias (short identifier) of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Creation date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Expiration date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date the personal access token was last used.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date of last modification of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The public portion of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes granted to the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Resources related to the personal access token.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Relationship to user object.
\n
\n
\n
\n
\n
\n
\n
A unique identifier that represents the user.
\n
\n \n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Additional information related to the personal access token response.
\n
\n
\n
\n
\n
\n
\n
\n
\n
total_filtered_count
\n
\n
\n
Total filtered personal access token count.
\n
\n \n
\n
\n
\n
\n
\n
"
+ },
+ "400": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "404": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {},
+ "json": {},
+ "html": ""
+ }
+ },
+ "CreateServiceAccountAccessToken": {
+ "responses": {
+ "201": {
+ "json": {
+ "data": {
+ "attributes": {
+ "alias": "2H9MCNMBM8FQjQ16YucXkX",
+ "created_at": "2024-01-01T00:00:00+00:00",
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "key": "string",
+ "name": "My Personal Access Token",
+ "public_portion": "ddpat_abc123",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "string",
+ "relationships": {
+ "owned_by": {
+ "data": {
+ "id": "00000000-0000-0000-2345-000000000000",
+ "type": "users"
+ }
+ }
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Datadog personal access token, including the token key.
\n
\n
\n
\n
\n
\n
\n
Attributes of a full personal access token, including the token key.
\n
\n
\n
\n
\n
\n
\n
The alias (short identifier) of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Creation date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Expiration date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The personal access token key. Only returned upon creation.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The public portion of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes granted to the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Resources related to the personal access token.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Relationship to user object.
\n
\n
\n
\n
\n
\n
\n
A unique identifier that represents the user.
\n
\n \n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ },
+ "400": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "404": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {
+ "data": {
+ "attributes": {
+ "name": "Service Account Access Token",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "json": {
+ "data": {
+ "attributes": {
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "name": "Service Account Access Token",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Object used to create a service account access token.
\n
\n
\n
\n
\n
\n
attributes [required]
\n
\n
\n
Attributes used to create a service account access token.
\n
\n
\n
\n
\n
\n
\n
Expiration date of the access token. Optional for service account tokens.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes to grant the access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ }
+ },
+ "RevokeServiceAccountAccessToken": {
+ "responses": {
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "404": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {},
+ "json": {},
+ "html": ""
+ }
+ },
+ "GetServiceAccountAccessToken": {
+ "responses": {
+ "200": {
+ "json": {
+ "data": {
+ "attributes": {
+ "alias": "2H9MCNMBM8FQjQ16YucXkX",
+ "created_at": "2024-01-01T00:00:00+00:00",
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "last_used_at": "2025-06-15T12:30:00+00:00",
+ "modified_at": "2024-06-01T00:00:00+00:00",
+ "name": "My Personal Access Token",
+ "public_portion": "ddpat_abc123",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "string",
+ "relationships": {
+ "owned_by": {
+ "data": {
+ "id": "00000000-0000-0000-2345-000000000000",
+ "type": "users"
+ }
+ }
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Datadog personal access token.
\n
\n
\n
\n
\n
\n
\n
Attributes of a personal access token.
\n
\n
\n
\n
\n
\n
\n
The alias (short identifier) of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Creation date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Expiration date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date the personal access token was last used.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date of last modification of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The public portion of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes granted to the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Resources related to the personal access token.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Relationship to user object.
\n
\n
\n
\n
\n
\n
\n
A unique identifier that represents the user.
\n
\n \n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ },
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "404": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {},
+ "json": {},
+ "html": ""
+ }
+ },
+ "UpdateServiceAccountAccessToken": {
+ "responses": {
+ "200": {
+ "json": {
+ "data": {
+ "attributes": {
+ "alias": "2H9MCNMBM8FQjQ16YucXkX",
+ "created_at": "2024-01-01T00:00:00+00:00",
+ "expires_at": "2025-12-31T23:59:59+00:00",
+ "last_used_at": "2025-06-15T12:30:00+00:00",
+ "modified_at": "2024-06-01T00:00:00+00:00",
+ "name": "My Personal Access Token",
+ "public_portion": "ddpat_abc123",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "string",
+ "relationships": {
+ "owned_by": {
+ "data": {
+ "id": "00000000-0000-0000-2345-000000000000",
+ "type": "users"
+ }
+ }
+ },
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Datadog personal access token.
\n
\n
\n
\n
\n
\n
\n
Attributes of a personal access token.
\n
\n
\n
\n
\n
\n
\n
The alias (short identifier) of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Creation date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Expiration date of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date the personal access token was last used.
\n
\n \n
\n
\n
\n
\n
\n
\n
Date of last modification of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
The public portion of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes granted to the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Resources related to the personal access token.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Relationship to user object.
\n
\n
\n
\n
\n
\n
\n
A unique identifier that represents the user.
\n
\n \n
\n
\n
\n
\n
\n
\n
Users resource type. \nAllowed enum values: users
default: users
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ },
+ "400": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "403": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "404": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ },
+ "429": {
+ "json": {
+ "errors": [
+ "Bad Request"
+ ]
+ },
+ "html": ""
+ }
+ },
+ "request": {
+ "json_curl": {
+ "data": {
+ "attributes": {},
+ "id": "00112233-4455-6677-8899-aabbccddeeff",
+ "type": "personal_access_tokens"
+ }
+ },
+ "json": {
+ "data": {
+ "attributes": {
+ "name": "Updated Personal Access Token",
+ "scopes": [
+ "dashboards_read",
+ "dashboards_write"
+ ]
+ },
+ "id": "00112233-4455-6677-8899-aabbccddeeff",
+ "type": "personal_access_tokens"
+ }
+ },
+ "html": "\n
\n
\n
\n
\n
Object used to update a personal access token.
\n
\n
\n
\n
\n
\n
attributes [required]
\n
\n
\n
Attributes used to update a personal access token.
\n
\n
\n
\n
\n
\n
\n
Name of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Array of scopes to grant the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
ID of the personal access token.
\n
\n \n
\n
\n
\n
\n
\n
\n
Personal access tokens resource type. \nAllowed enum values: personal_access_tokens
default: personal_access_tokens
\n
\n \n
\n
\n
\n
"
+ }
+ },
"ListServiceAccountApplicationKeys": {
"responses": {
"200": {
diff --git a/content/en/api/v2/service-accounts/request.CreateServiceAccountAccessToken.json b/content/en/api/v2/service-accounts/request.CreateServiceAccountAccessToken.json
new file mode 100644
index 00000000000..04095f03821
--- /dev/null
+++ b/content/en/api/v2/service-accounts/request.CreateServiceAccountAccessToken.json
@@ -0,0 +1,11 @@
+{
+ "data": {
+ "type": "personal_access_tokens",
+ "attributes": {
+ "name": "Example-Service-Account",
+ "scopes": [
+ "dashboards_read"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/content/en/api/v2/service-accounts/request.CreateServiceAccountAccessToken_4212922277.json b/content/en/api/v2/service-accounts/request.CreateServiceAccountAccessToken_4212922277.json
new file mode 100644
index 00000000000..61eecf006da
--- /dev/null
+++ b/content/en/api/v2/service-accounts/request.CreateServiceAccountAccessToken_4212922277.json
@@ -0,0 +1,11 @@
+{
+ "data": {
+ "type": "personal_access_tokens",
+ "attributes": {
+ "name": "Example-Personal-Access-Token",
+ "scopes": [
+ "dashboards_read"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/content/en/api/v2/service-accounts/request.UpdateServiceAccountAccessToken.json b/content/en/api/v2/service-accounts/request.UpdateServiceAccountAccessToken.json
new file mode 100644
index 00000000000..a7ecef5da39
--- /dev/null
+++ b/content/en/api/v2/service-accounts/request.UpdateServiceAccountAccessToken.json
@@ -0,0 +1,9 @@
+{
+ "data": {
+ "id": "b712822c-2145-e8a1-5ba5-707401745081",
+ "type": "personal_access_tokens",
+ "attributes": {
+ "name": "My Personal Access Token-updated"
+ }
+ }
+}
\ No newline at end of file
diff --git a/data/api/v2/CodeExamples.json b/data/api/v2/CodeExamples.json
index e968d744c0f..1dde924fd58 100644
--- a/data/api/v2/CodeExamples.json
+++ b/data/api/v2/CodeExamples.json
@@ -1434,6 +1434,32 @@
"description": "Update a specific Org Config returns \"OK\" response"
}
],
+ "CreatePersonalAccessToken": [
+ {
+ "group": "key_management",
+ "suffix": "",
+ "description": "Create a personal access token returns \"Created\" response"
+ }
+ ],
+ "UpdatePersonalAccessToken": [
+ {
+ "group": "key_management",
+ "suffix": "",
+ "description": "Update a personal access token returns \"OK\" response"
+ }
+ ],
+ "CreateServiceAccountAccessToken": [
+ {
+ "group": "service_accounts",
+ "suffix": "_4212922277",
+ "description": "Create a service account access token returns \"Created\" response"
+ },
+ {
+ "group": "service_accounts",
+ "suffix": "",
+ "description": "Create an access token for a service account returns \"Created\" response"
+ }
+ ],
"CreatePowerpack": [
{
"group": "powerpack",
@@ -1991,6 +2017,13 @@
"description": "Edit an application key for this service account returns \"OK\" response"
}
],
+ "UpdateServiceAccountAccessToken": [
+ {
+ "group": "service_accounts",
+ "suffix": "",
+ "description": "Update an access token for a service account returns \"OK\" response"
+ }
+ ],
"CreateOrUpdateServiceDefinitions": [
{
"group": "service_definition",
diff --git a/data/api/v2/full_spec.yaml b/data/api/v2/full_spec.yaml
index e599f858533..f4b6bc26b45 100644
--- a/data/api/v2/full_spec.yaml
+++ b/data/api/v2/full_spec.yaml
@@ -951,6 +951,41 @@ components:
required: true
schema:
type: string
+ PersonalAccessTokenID:
+ description: The UUID of the personal access token.
+ in: path
+ name: pat_uuid
+ required: true
+ schema:
+ example: "00000000-0000-1234-0000-000000000000"
+ type: string
+ PersonalAccessTokensFilterOwnerUUIDParameter:
+ description: Filter personal access tokens by the owner's UUID. Supports multiple values.
+ in: query
+ name: filter[owner_uuid]
+ required: false
+ schema:
+ items:
+ example: "00000000-0000-1234-0000-000000000000"
+ type: string
+ type: array
+ PersonalAccessTokensFilterParameter:
+ description: Filter personal access tokens by the specified string.
+ in: query
+ name: filter
+ required: false
+ schema:
+ type: string
+ PersonalAccessTokensSortParameter:
+ description: |-
+ Personal access token attribute used to sort results. Sort order is ascending
+ by default. In order to specify a descending sort, prefix the
+ attribute with a minus sign.
+ in: query
+ name: sort
+ required: false
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokensSort"
ProjectIDPathParameter:
description: Project UUID.
example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
@@ -27322,6 +27357,62 @@ components:
- name
- requirements
type: object
+ FullPersonalAccessToken:
+ description: Datadog personal access token, including the token key.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/FullPersonalAccessTokenAttributes"
+ id:
+ description: ID of the personal access token.
+ type: string
+ relationships:
+ $ref: "#/components/schemas/PersonalAccessTokenRelationships"
+ type:
+ $ref: "#/components/schemas/PersonalAccessTokensType"
+ type: object
+ FullPersonalAccessTokenAttributes:
+ description: Attributes of a full personal access token, including the token key.
+ properties:
+ alias:
+ description: The alias (short identifier) of the personal access token.
+ example: "2H9MCNMBM8FQjQ16YucXkX"
+ readOnly: true
+ type: string
+ created_at:
+ description: Creation date of the personal access token.
+ example: "2024-01-01T00:00:00+00:00"
+ format: date-time
+ readOnly: true
+ type: string
+ expires_at:
+ description: Expiration date of the personal access token.
+ example: "2025-12-31T23:59:59+00:00"
+ format: date-time
+ readOnly: true
+ type: string
+ key:
+ description: The personal access token key. Only returned upon creation.
+ readOnly: true
+ type: string
+ name:
+ description: Name of the personal access token.
+ example: "My Personal Access Token"
+ type: string
+ public_portion:
+ description: The public portion of the personal access token.
+ example: "ddpat_abc123"
+ readOnly: true
+ type: string
+ scopes:
+ description: Array of scopes granted to the personal access token.
+ example:
+ - "dashboards_read"
+ - "dashboards_write"
+ items:
+ description: Name of scope.
+ type: string
+ type: array
+ type: object
GCPCredentials:
description: The definition of the `GCPCredentials` object.
oneOf:
@@ -37403,6 +37494,17 @@ components:
$ref: "#/components/schemas/OnCallNotificationRulesIncluded"
type: array
type: object
+ ListPersonalAccessTokensResponse:
+ description: Response for a list of personal access tokens.
+ properties:
+ data:
+ description: Array of personal access tokens.
+ items:
+ $ref: "#/components/schemas/PersonalAccessToken"
+ type: array
+ meta:
+ $ref: "#/components/schemas/PersonalAccessTokenResponseMeta"
+ type: object
ListPipelinesResponse:
description: Represents the response payload containing a list of pipelines and associated metadata.
properties:
@@ -49018,6 +49120,217 @@ components:
type: string
x-enum-varnames:
- PERMISSIONS
+ PersonalAccessToken:
+ description: Datadog personal access token.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/PersonalAccessTokenAttributes"
+ id:
+ description: ID of the personal access token.
+ type: string
+ relationships:
+ $ref: "#/components/schemas/PersonalAccessTokenRelationships"
+ type:
+ $ref: "#/components/schemas/PersonalAccessTokensType"
+ type: object
+ PersonalAccessTokenAttributes:
+ description: Attributes of a personal access token.
+ properties:
+ alias:
+ description: The alias (short identifier) of the personal access token.
+ example: "2H9MCNMBM8FQjQ16YucXkX"
+ readOnly: true
+ type: string
+ created_at:
+ description: Creation date of the personal access token.
+ example: "2024-01-01T00:00:00+00:00"
+ format: date-time
+ readOnly: true
+ type: string
+ expires_at:
+ description: Expiration date of the personal access token.
+ example: "2025-12-31T23:59:59+00:00"
+ format: date-time
+ readOnly: true
+ type: string
+ last_used_at:
+ description: Date the personal access token was last used.
+ example: "2025-06-15T12:30:00+00:00"
+ format: date-time
+ nullable: true
+ readOnly: true
+ type: string
+ modified_at:
+ description: Date of last modification of the personal access token.
+ example: "2024-06-01T00:00:00+00:00"
+ format: date-time
+ nullable: true
+ readOnly: true
+ type: string
+ name:
+ description: Name of the personal access token.
+ example: "My Personal Access Token"
+ type: string
+ public_portion:
+ description: The public portion of the personal access token.
+ example: "ddpat_abc123"
+ readOnly: true
+ type: string
+ scopes:
+ description: Array of scopes granted to the personal access token.
+ example:
+ - "dashboards_read"
+ - "dashboards_write"
+ items:
+ description: Name of scope.
+ type: string
+ type: array
+ type: object
+ PersonalAccessTokenCreateAttributes:
+ description: Attributes used to create a personal access token.
+ properties:
+ expires_at:
+ description: Expiration date of the personal access token. Must be at least 24 hours in the future.
+ example: "2025-12-31T23:59:59+00:00"
+ format: date-time
+ type: string
+ name:
+ description: Name of the personal access token.
+ example: "My Personal Access Token"
+ type: string
+ scopes:
+ description: Array of scopes to grant the personal access token.
+ example:
+ - "dashboards_read"
+ - "dashboards_write"
+ items:
+ description: Name of scope.
+ type: string
+ type: array
+ required:
+ - name
+ - scopes
+ - expires_at
+ type: object
+ PersonalAccessTokenCreateData:
+ description: Object used to create a personal access token.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/PersonalAccessTokenCreateAttributes"
+ type:
+ $ref: "#/components/schemas/PersonalAccessTokensType"
+ required:
+ - attributes
+ - type
+ type: object
+ PersonalAccessTokenCreateRequest:
+ description: Request used to create a personal access token.
+ properties:
+ data:
+ $ref: "#/components/schemas/PersonalAccessTokenCreateData"
+ required:
+ - data
+ type: object
+ PersonalAccessTokenCreateResponse:
+ description: Response for creating a personal access token. Includes the token key.
+ properties:
+ data:
+ $ref: "#/components/schemas/FullPersonalAccessToken"
+ type: object
+ PersonalAccessTokenRelationships:
+ description: Resources related to the personal access token.
+ properties:
+ owned_by:
+ $ref: "#/components/schemas/RelationshipToUser"
+ type: object
+ PersonalAccessTokenResponse:
+ description: Response for retrieving a personal access token.
+ properties:
+ data:
+ $ref: "#/components/schemas/PersonalAccessToken"
+ type: object
+ PersonalAccessTokenResponseMeta:
+ description: Additional information related to the personal access token response.
+ properties:
+ page:
+ $ref: "#/components/schemas/PersonalAccessTokenResponseMetaPage"
+ type: object
+ PersonalAccessTokenResponseMetaPage:
+ description: Pagination information.
+ properties:
+ total_filtered_count:
+ description: Total filtered personal access token count.
+ format: int64
+ type: integer
+ type: object
+ PersonalAccessTokenUpdateAttributes:
+ description: Attributes used to update a personal access token.
+ properties:
+ name:
+ description: Name of the personal access token.
+ example: "Updated Personal Access Token"
+ type: string
+ scopes:
+ description: Array of scopes to grant the personal access token.
+ example:
+ - "dashboards_read"
+ - "dashboards_write"
+ items:
+ description: Name of scope.
+ type: string
+ type: array
+ type: object
+ PersonalAccessTokenUpdateData:
+ description: Object used to update a personal access token.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/PersonalAccessTokenUpdateAttributes"
+ id:
+ description: ID of the personal access token.
+ example: "00112233-4455-6677-8899-aabbccddeeff"
+ type: string
+ type:
+ $ref: "#/components/schemas/PersonalAccessTokensType"
+ required:
+ - attributes
+ - id
+ - type
+ type: object
+ PersonalAccessTokenUpdateRequest:
+ description: Request used to update a personal access token.
+ properties:
+ data:
+ $ref: "#/components/schemas/PersonalAccessTokenUpdateData"
+ required:
+ - data
+ type: object
+ PersonalAccessTokensSort:
+ default: name
+ description: Sorting options
+ enum:
+ - name
+ - -name
+ - created_at
+ - -created_at
+ - expires_at
+ - -expires_at
+ type: string
+ x-enum-varnames:
+ - NAME_ASCENDING
+ - NAME_DESCENDING
+ - CREATED_AT_ASCENDING
+ - CREATED_AT_DESCENDING
+ - EXPIRES_AT_ASCENDING
+ - EXPIRES_AT_DESCENDING
+ PersonalAccessTokensType:
+ default: personal_access_tokens
+ description: Personal access tokens resource type.
+ enum:
+ - personal_access_tokens
+ example: personal_access_tokens
+ type: string
+ x-enum-varnames:
+ - PERSONAL_ACCESS_TOKENS
Playlist:
description: A single RUM replay playlist resource returned by create, update, or get operations.
properties:
@@ -61060,6 +61373,50 @@ components:
- REPLACEMENT_STRING
- PARTIAL_REPLACEMENT_FROM_BEGINNING
- PARTIAL_REPLACEMENT_FROM_END
+ ServiceAccountAccessTokenCreateAttributes:
+ description: Attributes used to create a service account access token.
+ properties:
+ expires_at:
+ description: Expiration date of the access token. Optional for service account tokens.
+ example: "2025-12-31T23:59:59+00:00"
+ format: date-time
+ type: string
+ name:
+ description: Name of the access token.
+ example: "Service Account Access Token"
+ type: string
+ scopes:
+ description: Array of scopes to grant the access token.
+ example:
+ - "dashboards_read"
+ - "dashboards_write"
+ items:
+ description: Name of scope.
+ type: string
+ type: array
+ required:
+ - name
+ - scopes
+ type: object
+ ServiceAccountAccessTokenCreateData:
+ description: Object used to create a service account access token.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/ServiceAccountAccessTokenCreateAttributes"
+ type:
+ $ref: "#/components/schemas/PersonalAccessTokensType"
+ required:
+ - attributes
+ - type
+ type: object
+ ServiceAccountAccessTokenCreateRequest:
+ description: Request used to create a service account access token.
+ properties:
+ data:
+ $ref: "#/components/schemas/ServiceAccountAccessTokenCreateData"
+ required:
+ - data
+ type: object
ServiceAccountCreateAttributes:
description: Attributes of the created user.
properties:
@@ -97257,6 +97614,200 @@ paths:
operator: OR
permissions:
- user_access_read
+ /api/v2/personal_access_tokens:
+ get:
+ description: List all personal access tokens for the organization.
+ operationId: ListPersonalAccessTokens
+ parameters:
+ - $ref: "#/components/parameters/PageSize"
+ - $ref: "#/components/parameters/PageNumber"
+ - $ref: "#/components/parameters/PersonalAccessTokensSortParameter"
+ - $ref: "#/components/parameters/PersonalAccessTokensFilterParameter"
+ - $ref: "#/components/parameters/PersonalAccessTokensFilterOwnerUUIDParameter"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ListPersonalAccessTokensResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Get all personal access tokens
+ tags:
+ - Key Management
+ x-menu-order: 16
+ "x-permission":
+ operator: OR
+ permissions:
+ - user_app_keys
+ - org_app_keys_read
+ post:
+ description: Create a personal access token for the current user.
+ operationId: CreatePersonalAccessToken
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenCreateRequest"
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenCreateResponse"
+ description: Created
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Create a personal access token
+ tags:
+ - Key Management
+ x-codegen-request-body-name: body
+ x-menu-order: 15
+ "x-permission":
+ operator: OR
+ permissions:
+ - user_app_keys
+ /api/v2/personal_access_tokens/{pat_uuid}:
+ delete:
+ description: Revoke a specific personal access token.
+ operationId: RevokePersonalAccessToken
+ parameters:
+ - $ref: "#/components/parameters/PersonalAccessTokenID"
+ responses:
+ "204":
+ description: No Content
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Revoke a personal access token
+ tags:
+ - Key Management
+ x-menu-order: 19
+ "x-permission":
+ operator: OR
+ permissions:
+ - user_app_keys
+ - org_app_keys_write
+ get:
+ description: Get a specific personal access token by its UUID.
+ operationId: GetPersonalAccessToken
+ parameters:
+ - $ref: "#/components/parameters/PersonalAccessTokenID"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenResponse"
+ description: OK
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Get a personal access token
+ tags:
+ - Key Management
+ x-menu-order: 17
+ "x-permission":
+ operator: OR
+ permissions:
+ - user_app_keys
+ - org_app_keys_read
+ patch:
+ description: Update a specific personal access token.
+ operationId: UpdatePersonalAccessToken
+ parameters:
+ - $ref: "#/components/parameters/PersonalAccessTokenID"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenUpdateRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Update a personal access token
+ tags:
+ - Key Management
+ x-codegen-request-body-name: body
+ x-menu-order: 18
+ "x-permission":
+ operator: OR
+ permissions:
+ - user_app_keys
+ - org_app_keys_write
/api/v2/posture_management/findings:
get:
description: |-
@@ -106598,6 +107149,213 @@ paths:
operator: OR
permissions:
- service_account_write
+ /api/v2/service_accounts/{service_account_id}/access_tokens:
+ get:
+ description: List all access tokens for a specific service account.
+ operationId: ListServiceAccountAccessTokens
+ parameters:
+ - $ref: "#/components/parameters/ServiceAccountID"
+ - $ref: "#/components/parameters/PageSize"
+ - $ref: "#/components/parameters/PageNumber"
+ - $ref: "#/components/parameters/PersonalAccessTokensSortParameter"
+ - $ref: "#/components/parameters/PersonalAccessTokensFilterParameter"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ListPersonalAccessTokensResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: List access tokens for a service account
+ tags:
+ - Service Accounts
+ x-menu-order: 7
+ "x-permission":
+ operator: OR
+ permissions:
+ - service_account_write
+ post:
+ description: Create an access token for a service account.
+ operationId: CreateServiceAccountAccessToken
+ parameters:
+ - $ref: "#/components/parameters/ServiceAccountID"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ServiceAccountAccessTokenCreateRequest"
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenCreateResponse"
+ description: Created
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Create an access token for a service account
+ tags:
+ - Service Accounts
+ x-codegen-request-body-name: body
+ x-menu-order: 8
+ "x-permission":
+ operator: OR
+ permissions:
+ - service_account_write
+ /api/v2/service_accounts/{service_account_id}/access_tokens/{pat_uuid}:
+ delete:
+ description: Revoke a specific access token for a service account.
+ operationId: RevokeServiceAccountAccessToken
+ parameters:
+ - $ref: "#/components/parameters/ServiceAccountID"
+ - $ref: "#/components/parameters/PersonalAccessTokenID"
+ responses:
+ "204":
+ description: No Content
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Revoke an access token for a service account
+ tags:
+ - Service Accounts
+ x-menu-order: 11
+ "x-permission":
+ operator: OR
+ permissions:
+ - service_account_write
+ get:
+ description: Get a specific access token for a service account by its UUID.
+ operationId: GetServiceAccountAccessToken
+ parameters:
+ - $ref: "#/components/parameters/ServiceAccountID"
+ - $ref: "#/components/parameters/PersonalAccessTokenID"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenResponse"
+ description: OK
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Get an access token for a service account
+ tags:
+ - Service Accounts
+ x-menu-order: 9
+ "x-permission":
+ operator: OR
+ permissions:
+ - service_account_write
+ patch:
+ description: Update a specific access token for a service account.
+ operationId: UpdateServiceAccountAccessToken
+ parameters:
+ - $ref: "#/components/parameters/ServiceAccountID"
+ - $ref: "#/components/parameters/PersonalAccessTokenID"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenUpdateRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PersonalAccessTokenResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Update an access token for a service account
+ tags:
+ - Service Accounts
+ x-codegen-request-body-name: body
+ x-menu-order: 10
+ "x-permission":
+ operator: OR
+ permissions:
+ - service_account_write
/api/v2/service_accounts/{service_account_id}/application_keys:
get:
description: List all application keys available for this service account.
diff --git a/data/api/v2/translate_actions.json b/data/api/v2/translate_actions.json
index 5eb5fa8fa71..0a72d631950 100644
--- a/data/api/v2/translate_actions.json
+++ b/data/api/v2/translate_actions.json
@@ -2719,6 +2719,30 @@
"description": "Returns a list of all permissions, including name, description, and ID.",
"summary": "List permissions"
},
+ "ListPersonalAccessTokens": {
+ "description": "List all personal access tokens for the organization.",
+ "summary": "Get all personal access tokens"
+ },
+ "CreatePersonalAccessToken": {
+ "description": "Create a personal access token for the current user.",
+ "summary": "Create a personal access token",
+ "request_description": "",
+ "request_schema_description": "Request used to create a personal access token."
+ },
+ "RevokePersonalAccessToken": {
+ "description": "Revoke a specific personal access token.",
+ "summary": "Revoke a personal access token"
+ },
+ "GetPersonalAccessToken": {
+ "description": "Get a specific personal access token by its UUID.",
+ "summary": "Get a personal access token"
+ },
+ "UpdatePersonalAccessToken": {
+ "description": "Update a specific personal access token.",
+ "summary": "Update a personal access token",
+ "request_description": "",
+ "request_schema_description": "Request used to update a personal access token."
+ },
"ListFindings": {
"description": "Get a list of findings. These include both misconfigurations and identity risks.\n\n**Note**: To filter and return only identity risks, add the following query parameter: `?filter[tags]=dd_rule_type:ciem`\n\n### Filtering\n\nFilters can be applied by appending query parameters to the URL.\n\n - Using a single filter: `?filter[attribute_key]=attribute_value`\n - Chaining filters: `?filter[attribute_key]=attribute_value&filter[attribute_key]=attribute_value...`\n - Filtering on tags: `?filter[tags]=tag_key:tag_value&filter[tags]=tag_key_2:tag_value_2`\n\nHere, `attribute_key` can be any of the filter keys described further below.\n\nQuery parameters of type `integer` support comparison operators (`>`, `>=`, `<`, `<=`). This is particularly useful when filtering by `evaluation_changed_at` or `resource_discovery_timestamp`. For example: `?filter[evaluation_changed_at]=>20123123121`.\n\nYou can also use the negation operator on strings. For example, use `filter[resource_type]=-aws*` to filter for any non-AWS resources.\n\nThe operator must come after the equal sign. For example, to filter with the `>=` operator, add the operator after the equal sign: `filter[evaluation_changed_at]=>=1678809373257`.\n\nQuery parameters must be only among the documented ones and with values of correct types. Duplicated query parameters (e.g. `filter[status]=low&filter[status]=info`) are not allowed.\n\n### Additional extension fields\n\nAdditional extension fields are available for some findings.\n\nThe data is available when you include the query parameter `?detailed_findings=true` in the request.\n\nThe following fields are available for findings:\n- `external_id`: The resource external ID related to the finding.\n- `description`: The description and remediation steps for the finding.\n- `datadog_link`: The Datadog relative link for the finding.\n- `ip_addresses`: The list of private IP addresses for the resource related to the finding.\n\n### Response\n\nThe response includes an array of finding objects, pagination metadata, and a count of items that match the query.\n\nEach finding object contains the following:\n\n- The finding ID that can be used in a `GetFinding` request to retrieve the full finding details.\n- Core attributes, including status, evaluation, high-level resource details, muted state, and rule details.\n- `evaluation_changed_at` and `resource_discovery_date` time stamps.\n- An array of associated tags.",
"summary": "List findings"
@@ -3789,6 +3813,30 @@
"request_description": "",
"request_schema_description": "Create a service account."
},
+ "ListServiceAccountAccessTokens": {
+ "description": "List all access tokens for a specific service account.",
+ "summary": "List access tokens for a service account"
+ },
+ "CreateServiceAccountAccessToken": {
+ "description": "Create an access token for a service account.",
+ "summary": "Create an access token for a service account",
+ "request_description": "",
+ "request_schema_description": "Request used to create a service account access token."
+ },
+ "RevokeServiceAccountAccessToken": {
+ "description": "Revoke a specific access token for a service account.",
+ "summary": "Revoke an access token for a service account"
+ },
+ "GetServiceAccountAccessToken": {
+ "description": "Get a specific access token for a service account by its UUID.",
+ "summary": "Get an access token for a service account"
+ },
+ "UpdateServiceAccountAccessToken": {
+ "description": "Update a specific access token for a service account.",
+ "summary": "Update an access token for a service account",
+ "request_description": "",
+ "request_schema_description": "Request used to update a personal access token."
+ },
"ListServiceAccountApplicationKeys": {
"description": "List all application keys available for this service account.",
"summary": "List application keys for this service account"