Skip to content

Commit ade0d82

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add OpenAPI spec for authn-validation /api/v2/validate endpoint (#3482)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 06789e8 commit ade0d82

15 files changed

Lines changed: 665 additions & 47 deletions

.generator/schemas/v2/openapi.yaml

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82733,6 +82733,77 @@ components:
8273382733
description: The title of the event.
8273482734
example: "The event title"
8273582735
type: string
82736+
ValidateAPIKeyResponse:
82737+
description: Response object for the API and application key validation status check.
82738+
properties:
82739+
status:
82740+
$ref: "#/components/schemas/ValidateAPIKeyStatus"
82741+
required:
82742+
- status
82743+
type: object
82744+
ValidateAPIKeyStatus:
82745+
description: Status of the validation. Always `ok` when both the API key and the application key are valid.
82746+
enum:
82747+
- ok
82748+
example: ok
82749+
type: string
82750+
x-enum-varnames:
82751+
- OK
82752+
ValidateV2Attributes:
82753+
description: Attributes of the API key validation response.
82754+
properties:
82755+
api_key_id:
82756+
description: The UUID of the API key.
82757+
example: "a1b2c3d4-e5f6-47a8-b9c0-d1e2f3a4b5c6"
82758+
type: string
82759+
api_key_scopes:
82760+
description: List of scope names associated with the API key.
82761+
example:
82762+
- "remote_config_read"
82763+
items:
82764+
type: string
82765+
type: array
82766+
valid:
82767+
description: Whether the API key is valid.
82768+
example: true
82769+
type: boolean
82770+
required:
82771+
- valid
82772+
- api_key_scopes
82773+
- api_key_id
82774+
type: object
82775+
ValidateV2Data:
82776+
description: Data object containing the API key validation result.
82777+
properties:
82778+
attributes:
82779+
$ref: "#/components/schemas/ValidateV2Attributes"
82780+
id:
82781+
description: The UUID of the organization associated with the API key.
82782+
example: "550e8400-e29b-41d4-a716-446655440000"
82783+
type: string
82784+
type:
82785+
$ref: "#/components/schemas/ValidateV2Type"
82786+
required:
82787+
- id
82788+
- type
82789+
- attributes
82790+
type: object
82791+
ValidateV2Response:
82792+
description: Response for the API key validation endpoint.
82793+
properties:
82794+
data:
82795+
$ref: "#/components/schemas/ValidateV2Data"
82796+
required:
82797+
- data
82798+
type: object
82799+
ValidateV2Type:
82800+
description: Resource type for the API key validation response.
82801+
enum:
82802+
- validate_v2
82803+
example: validate_v2
82804+
type: string
82805+
x-enum-varnames:
82806+
- ValidateV2
8273682807
ValidationError:
8273782808
description: Represents a single validation error, including a human-readable title and metadata.
8273882809
properties:
@@ -145630,6 +145701,89 @@ paths:
145630145701
operator: OR
145631145702
permissions:
145632145703
- teams_read
145704+
/api/v2/validate:
145705+
get:
145706+
description: Check if the API key is valid. Returns the organization UUID, API key ID, and associated scopes.
145707+
operationId: Validate
145708+
responses:
145709+
"200":
145710+
content:
145711+
application/json:
145712+
examples:
145713+
default:
145714+
value:
145715+
data:
145716+
attributes:
145717+
api_key_id: "a1b2c3d4-e5f6-47a8-b9c0-d1e2f3a4b5c6"
145718+
api_key_scopes:
145719+
- "remote_config_read"
145720+
valid: true
145721+
id: "550e8400-e29b-41d4-a716-446655440000"
145722+
type: "validate_v2"
145723+
schema:
145724+
$ref: "#/components/schemas/ValidateV2Response"
145725+
description: OK
145726+
"403":
145727+
content:
145728+
application/json:
145729+
schema:
145730+
$ref: "#/components/schemas/JSONAPIErrorResponse"
145731+
description: Forbidden
145732+
"429":
145733+
$ref: "#/components/responses/TooManyRequestsResponse"
145734+
security:
145735+
- apiKeyAuth: []
145736+
summary: Validate API key
145737+
tags:
145738+
- Key Management
145739+
"x-permission":
145740+
operator: OPEN
145741+
permissions: []
145742+
x-unstable: |-
145743+
**Note**: This endpoint is in preview and is subject to change.
145744+
If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
145745+
/api/v2/validate_keys:
145746+
get:
145747+
description: |-
145748+
Check that the API key and application key used for the request are both valid.
145749+
Returns `{"status": "ok"}` on success, `401` or `403` otherwise. Useful as a
145750+
lightweight authentication probe before issuing other API calls that require
145751+
full credentials.
145752+
operationId: ValidateAPIKey
145753+
responses:
145754+
"200":
145755+
content:
145756+
application/json:
145757+
examples:
145758+
default:
145759+
value:
145760+
status: ok
145761+
schema:
145762+
$ref: "#/components/schemas/ValidateAPIKeyResponse"
145763+
description: OK
145764+
"401":
145765+
content:
145766+
application/json:
145767+
schema:
145768+
$ref: "#/components/schemas/APIErrorResponse"
145769+
description: Unauthorized
145770+
"403":
145771+
content:
145772+
application/json:
145773+
schema:
145774+
$ref: "#/components/schemas/APIErrorResponse"
145775+
description: Forbidden
145776+
"429":
145777+
$ref: "#/components/responses/TooManyRequestsResponse"
145778+
security:
145779+
- apiKeyAuth: []
145780+
appKeyAuth: []
145781+
summary: Validate API and application keys
145782+
tags:
145783+
- Key Management
145784+
"x-permission":
145785+
operator: OPEN
145786+
permissions: []
145633145787
/api/v2/web-integrations/{integration_name}/accounts:
145634145788
get:
145635145789
description: List accounts for a given web integration.

docs/datadog_api_client.v2.model.rst

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36516,6 +36516,48 @@ datadog\_api\_client.v2.model.v2\_event\_response module
3651636516
:members:
3651736517
:show-inheritance:
3651836518

36519+
datadog\_api\_client.v2.model.validate\_api\_key\_response module
36520+
-----------------------------------------------------------------
36521+
36522+
.. automodule:: datadog_api_client.v2.model.validate_api_key_response
36523+
:members:
36524+
:show-inheritance:
36525+
36526+
datadog\_api\_client.v2.model.validate\_api\_key\_status module
36527+
---------------------------------------------------------------
36528+
36529+
.. automodule:: datadog_api_client.v2.model.validate_api_key_status
36530+
:members:
36531+
:show-inheritance:
36532+
36533+
datadog\_api\_client.v2.model.validate\_v2\_attributes module
36534+
-------------------------------------------------------------
36535+
36536+
.. automodule:: datadog_api_client.v2.model.validate_v2_attributes
36537+
:members:
36538+
:show-inheritance:
36539+
36540+
datadog\_api\_client.v2.model.validate\_v2\_data module
36541+
-------------------------------------------------------
36542+
36543+
.. automodule:: datadog_api_client.v2.model.validate_v2_data
36544+
:members:
36545+
:show-inheritance:
36546+
36547+
datadog\_api\_client.v2.model.validate\_v2\_response module
36548+
-----------------------------------------------------------
36549+
36550+
.. automodule:: datadog_api_client.v2.model.validate_v2_response
36551+
:members:
36552+
:show-inheritance:
36553+
36554+
datadog\_api\_client.v2.model.validate\_v2\_type module
36555+
-------------------------------------------------------
36556+
36557+
.. automodule:: datadog_api_client.v2.model.validate_v2_type
36558+
:members:
36559+
:show-inheritance:
36560+
3651936561
datadog\_api\_client.v2.model.validation\_error module
3652036562
------------------------------------------------------
3652136563

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""
2+
Validate API key returns "OK" response
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.key_management_api import KeyManagementApi
7+
8+
configuration = Configuration()
9+
configuration.unstable_operations["validate"] = True
10+
with ApiClient(configuration) as api_client:
11+
api_instance = KeyManagementApi(api_client)
12+
response = api_instance.validate()
13+
14+
print(response)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"""
2+
Validate API and application keys returns "OK" response
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.key_management_api import KeyManagementApi
7+
8+
configuration = Configuration()
9+
with ApiClient(configuration) as api_client:
10+
api_instance = KeyManagementApi(api_client)
11+
response = api_instance.validate_api_key()
12+
13+
print(response)

src/datadog_api_client/configuration.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ def __init__(
295295
"v2.update_llm_obs_experiment": False,
296296
"v2.update_llm_obs_project": False,
297297
"v2.anonymize_users": False,
298+
"v2.validate": False,
298299
"v2.create_open_api": False,
299300
"v2.delete_open_api": False,
300301
"v2.get_open_api": False,

src/datadog_api_client/v2/api/key_management_api.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
from datadog_api_client.v2.model.personal_access_token_create_request import PersonalAccessTokenCreateRequest
2828
from datadog_api_client.v2.model.personal_access_token_response import PersonalAccessTokenResponse
2929
from datadog_api_client.v2.model.personal_access_token_update_request import PersonalAccessTokenUpdateRequest
30+
from datadog_api_client.v2.model.validate_v2_response import ValidateV2Response
31+
from datadog_api_client.v2.model.validate_api_key_response import ValidateAPIKeyResponse
3032

3133

3234
class KeyManagementApi:
@@ -622,6 +624,38 @@ def __init__(self, api_client=None):
622624
api_client=api_client,
623625
)
624626

627+
self._validate_endpoint = _Endpoint(
628+
settings={
629+
"response_type": (ValidateV2Response,),
630+
"auth": ["apiKeyAuth"],
631+
"endpoint_path": "/api/v2/validate",
632+
"operation_id": "validate",
633+
"http_method": "GET",
634+
"version": "v2",
635+
},
636+
params_map={},
637+
headers_map={
638+
"accept": ["application/json"],
639+
},
640+
api_client=api_client,
641+
)
642+
643+
self._validate_api_key_endpoint = _Endpoint(
644+
settings={
645+
"response_type": (ValidateAPIKeyResponse,),
646+
"auth": ["apiKeyAuth", "appKeyAuth"],
647+
"endpoint_path": "/api/v2/validate_keys",
648+
"operation_id": "validate_api_key",
649+
"http_method": "GET",
650+
"version": "v2",
651+
},
652+
params_map={},
653+
headers_map={
654+
"accept": ["application/json"],
655+
},
656+
api_client=api_client,
657+
)
658+
625659
def create_api_key(
626660
self,
627661
body: APIKeyCreateRequest,
@@ -1145,3 +1179,30 @@ def update_personal_access_token(
11451179
kwargs["body"] = body
11461180

11471181
return self._update_personal_access_token_endpoint.call_with_http_info(**kwargs)
1182+
1183+
def validate(
1184+
self,
1185+
) -> ValidateV2Response:
1186+
"""Validate API key.
1187+
1188+
Check if the API key is valid. Returns the organization UUID, API key ID, and associated scopes.
1189+
1190+
:rtype: ValidateV2Response
1191+
"""
1192+
kwargs: Dict[str, Any] = {}
1193+
return self._validate_endpoint.call_with_http_info(**kwargs)
1194+
1195+
def validate_api_key(
1196+
self,
1197+
) -> ValidateAPIKeyResponse:
1198+
"""Validate API and application keys.
1199+
1200+
Check that the API key and application key used for the request are both valid.
1201+
Returns ``{"status": "ok"}`` on success, ``401`` or ``403`` otherwise. Useful as a
1202+
lightweight authentication probe before issuing other API calls that require
1203+
full credentials.
1204+
1205+
:rtype: ValidateAPIKeyResponse
1206+
"""
1207+
kwargs: Dict[str, Any] = {}
1208+
return self._validate_api_key_endpoint.call_with_http_info(**kwargs)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
# This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
# Copyright 2019-Present Datadog, Inc.
4+
from __future__ import annotations
5+
6+
from typing import TYPE_CHECKING
7+
8+
from datadog_api_client.model_utils import (
9+
ModelNormal,
10+
cached_property,
11+
)
12+
13+
14+
if TYPE_CHECKING:
15+
from datadog_api_client.v2.model.validate_api_key_status import ValidateAPIKeyStatus
16+
17+
18+
class ValidateAPIKeyResponse(ModelNormal):
19+
@cached_property
20+
def openapi_types(_):
21+
from datadog_api_client.v2.model.validate_api_key_status import ValidateAPIKeyStatus
22+
23+
return {
24+
"status": (ValidateAPIKeyStatus,),
25+
}
26+
27+
attribute_map = {
28+
"status": "status",
29+
}
30+
31+
def __init__(self_, status: ValidateAPIKeyStatus, **kwargs):
32+
"""
33+
Response object for the API and application key validation status check.
34+
35+
:param status: Status of the validation. Always ``ok`` when both the API key and the application key are valid.
36+
:type status: ValidateAPIKeyStatus
37+
"""
38+
super().__init__(kwargs)
39+
40+
self_.status = status

0 commit comments

Comments
 (0)