diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index af969a3d7f..c9044d10db 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -34814,6 +34814,47 @@ components: - ms_channel_name - redirect_url type: object + MaxSessionDurationUpdateAttributes: + description: Attributes for updating maximum session duration. + properties: + max_session_duration: + description: Maximum session duration in seconds. Must not exceed 24 hours + (86400 seconds). + example: 60 + format: int64 + maximum: 86400 + minimum: 1 + type: integer + required: + - max_session_duration + type: object + MaxSessionDurationUpdateRequest: + description: Request to update the maximum session duration. + properties: + data: + $ref: '#/components/schemas/MaxSessionDurationUpdateRequestData' + required: + - data + type: object + MaxSessionDurationUpdateRequestData: + description: Data wrapper for maximum session duration update. + properties: + attributes: + $ref: '#/components/schemas/MaxSessionDurationUpdateAttributes' + type: + $ref: '#/components/schemas/MaxSessionDurationUpdateRequestDataType' + required: + - type + - attributes + type: object + MaxSessionDurationUpdateRequestDataType: + description: Type of the resource. + enum: + - max_session_duration + example: max_session_duration + type: string + x-enum-varnames: + - MAX_SESSION_DURATION MemberTeam: description: A member team properties: @@ -50546,6 +50587,65 @@ components: example: report_id type: string type: object + SamlConfigurationsUpdateAttributes: + description: Attributes for updating SAML preferences. + properties: + default_role_uuids: + description: List of role UUIDs to assign to JIT-provisioned users. Exactly + 1 role is required. + example: + - 19fcc38b-b651-46a0-b463-1f8f56c6a862 + items: + format: uuid + type: string + maxItems: 1 + minItems: 1 + type: array + jit_domains: + description: 'List of domains for Just-In-Time user provisioning. Maximum + 50 domains. + + Each domain must be between 1 and 256 characters.' + example: + - example1.com + - example2.com + items: + maxLength: 256 + minLength: 1 + type: string + maxItems: 50 + type: array + required: + - jit_domains + - default_role_uuids + type: object + SamlConfigurationsUpdateRequest: + description: Request to update organization SAML preferences. + properties: + data: + $ref: '#/components/schemas/SamlConfigurationsUpdateRequestData' + required: + - data + type: object + SamlConfigurationsUpdateRequestData: + description: Data wrapper for SAML preferences update. + properties: + attributes: + $ref: '#/components/schemas/SamlConfigurationsUpdateAttributes' + type: + $ref: '#/components/schemas/SamlConfigurationsUpdateRequestDataType' + required: + - type + - attributes + type: object + SamlConfigurationsUpdateRequestDataType: + description: Type of the resource. + enum: + - saml_preferences + example: saml_preferences + type: string + x-enum-varnames: + - SAML_PREFERENCES ScaRequest: properties: data: @@ -80508,6 +80608,59 @@ paths: operator: OR permissions: - org_management + /api/v2/login/org_configs/max_session_duration: + put: + description: 'Updates the maximum session duration for an organization. This + controls how long user sessions + + can remain active before requiring re-authentication. The value must not exceed + 24 hours (86400 seconds). + + + Requires `org_management` permission and a session that has been active within + the last 12 hours.' + operationId: UpdateLoginOrgConfigMaxSessionDuration + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MaxSessionDurationUpdateRequest' + required: true + responses: + '204': + description: No Content - The maximum session duration was successfully + updated. + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Internal Server Error + summary: Update maximum session duration + tags: + - Organizations + x-unstable: This endpoint is in public beta. If you have any feedback, contact + [Datadog support](https://docs.datadoghq.com/help/). /api/v2/logs: post: description: 'Send your logs to your Datadog platform over HTTP. Limits per @@ -85421,6 +85574,64 @@ paths: operator: OR permissions: - on_call_read + /api/v2/org/saml_configurations: + patch: + description: 'Updates SAML preferences for an organization, including JIT provisioning + domains and default role assignments. + + + This endpoint allows you to configure: + + - `jit_domains`: List of domains for Just-In-Time user provisioning (up to + 50 domains, 1-256 characters each) + + - `default_role_uuids`: List of role UUIDs to assign to JIT-provisioned users + (exactly 1 role required) + + + Requires `org_management` permission. This endpoint is gated by the `org-saml-preferences-api-gate` + experiment.' + operationId: UpdateOrgSamlConfigurations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SamlConfigurationsUpdateRequest' + required: true + responses: + '204': + description: No Content - The SAML preferences were successfully updated. + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Internal Server Error + summary: Update organization SAML preferences + tags: + - Organizations + x-unstable: This endpoint is in public beta. If you have any feedback, contact + [Datadog support](https://docs.datadoghq.com/help/). /api/v2/org_configs: get: description: Returns all Org Configs (name, description, and value). diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 538d5aa411..03ab45c6f0 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -15054,6 +15054,34 @@ datadog\_api\_client.v2.model.logs\_warning module :members: :show-inheritance: +datadog\_api\_client.v2.model.max\_session\_duration\_update\_attributes module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.max_session_duration_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.max\_session\_duration\_update\_request module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.max_session_duration_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.max\_session\_duration\_update\_request\_data module +---------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.max_session_duration_update_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.max\_session\_duration\_update\_request\_data\_type module +---------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.max_session_duration_update_request_data_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.member\_team module ------------------------------------------------- @@ -22166,6 +22194,34 @@ datadog\_api\_client.v2.model.saml\_assertion\_attributes\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.saml\_configurations\_update\_attributes module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.saml_configurations_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.saml\_configurations\_update\_request module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.saml_configurations_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.saml\_configurations\_update\_request\_data module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.saml_configurations_update_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.saml\_configurations\_update\_request\_data\_type module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.saml_configurations_update_request_data_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.sbom module ----------------------------------------- diff --git a/examples/v2/organizations/UpdateLoginOrgConfigMaxSessionDuration.py b/examples/v2/organizations/UpdateLoginOrgConfigMaxSessionDuration.py new file mode 100644 index 0000000000..11d907a9b9 --- /dev/null +++ b/examples/v2/organizations/UpdateLoginOrgConfigMaxSessionDuration.py @@ -0,0 +1,27 @@ +""" +Update maximum session duration returns "No Content - The maximum session duration was successfully updated." response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.organizations_api import OrganizationsApi +from datadog_api_client.v2.model.max_session_duration_update_attributes import MaxSessionDurationUpdateAttributes +from datadog_api_client.v2.model.max_session_duration_update_request import MaxSessionDurationUpdateRequest +from datadog_api_client.v2.model.max_session_duration_update_request_data import MaxSessionDurationUpdateRequestData +from datadog_api_client.v2.model.max_session_duration_update_request_data_type import ( + MaxSessionDurationUpdateRequestDataType, +) + +body = MaxSessionDurationUpdateRequest( + data=MaxSessionDurationUpdateRequestData( + attributes=MaxSessionDurationUpdateAttributes( + max_session_duration=60, + ), + type=MaxSessionDurationUpdateRequestDataType.MAX_SESSION_DURATION, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_login_org_config_max_session_duration"] = True +with ApiClient(configuration) as api_client: + api_instance = OrganizationsApi(api_client) + api_instance.update_login_org_config_max_session_duration(body=body) diff --git a/examples/v2/organizations/UpdateOrgSamlConfigurations.py b/examples/v2/organizations/UpdateOrgSamlConfigurations.py new file mode 100644 index 0000000000..fb6685349f --- /dev/null +++ b/examples/v2/organizations/UpdateOrgSamlConfigurations.py @@ -0,0 +1,34 @@ +""" +Update organization SAML preferences returns "No Content - The SAML preferences were successfully updated." response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.organizations_api import OrganizationsApi +from datadog_api_client.v2.model.saml_configurations_update_attributes import SamlConfigurationsUpdateAttributes +from datadog_api_client.v2.model.saml_configurations_update_request import SamlConfigurationsUpdateRequest +from datadog_api_client.v2.model.saml_configurations_update_request_data import SamlConfigurationsUpdateRequestData +from datadog_api_client.v2.model.saml_configurations_update_request_data_type import ( + SamlConfigurationsUpdateRequestDataType, +) +from uuid import UUID + +body = SamlConfigurationsUpdateRequest( + data=SamlConfigurationsUpdateRequestData( + attributes=SamlConfigurationsUpdateAttributes( + default_role_uuids=[ + UUID("19fcc38b-b651-46a0-b463-1f8f56c6a862"), + ], + jit_domains=[ + "example1.com", + "example2.com", + ], + ), + type=SamlConfigurationsUpdateRequestDataType.SAML_PREFERENCES, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_org_saml_configurations"] = True +with ApiClient(configuration) as api_client: + api_instance = OrganizationsApi(api_client) + api_instance.update_org_saml_configurations(body=body) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index 02c6e7a9be..63f7dd7b64 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -362,6 +362,8 @@ def __init__( "v2.list_service_now_templates": False, "v2.list_service_now_users": False, "v2.update_service_now_template": False, + "v2.update_login_org_config_max_session_duration": False, + "v2.update_org_saml_configurations": False, "v2.add_role_to_restriction_query": False, "v2.create_restriction_query": False, "v2.delete_restriction_query": False, diff --git a/src/datadog_api_client/v2/api/organizations_api.py b/src/datadog_api_client/v2/api/organizations_api.py index 68d83731f7..405897a8c2 100644 --- a/src/datadog_api_client/v2/api/organizations_api.py +++ b/src/datadog_api_client/v2/api/organizations_api.py @@ -12,6 +12,8 @@ UnsetType, unset, ) +from datadog_api_client.v2.model.max_session_duration_update_request import MaxSessionDurationUpdateRequest +from datadog_api_client.v2.model.saml_configurations_update_request import SamlConfigurationsUpdateRequest from datadog_api_client.v2.model.org_config_list_response import OrgConfigListResponse from datadog_api_client.v2.model.org_config_get_response import OrgConfigGetResponse from datadog_api_client.v2.model.org_config_write_request import OrgConfigWriteRequest @@ -66,6 +68,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._update_login_org_config_max_session_duration_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/login/org_configs/max_session_duration", + "operation_id": "update_login_org_config_max_session_duration", + "http_method": "PUT", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (MaxSessionDurationUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["*/*"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._update_org_config_endpoint = _Endpoint( settings={ "response_type": (OrgConfigGetResponse,), @@ -92,6 +114,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._update_org_saml_configurations_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/org/saml_configurations", + "operation_id": "update_org_saml_configurations", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (SamlConfigurationsUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["*/*"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._upload_idp_metadata_endpoint = _Endpoint( settings={ "response_type": None, @@ -141,6 +183,25 @@ def list_org_configs( kwargs: Dict[str, Any] = {} return self._list_org_configs_endpoint.call_with_http_info(**kwargs) + def update_login_org_config_max_session_duration( + self, + body: MaxSessionDurationUpdateRequest, + ) -> None: + """Update maximum session duration. + + Updates the maximum session duration for an organization. This controls how long user sessions + can remain active before requiring re-authentication. The value must not exceed 24 hours (86400 seconds). + + Requires ``org_management`` permission and a session that has been active within the last 12 hours. + + :type body: MaxSessionDurationUpdateRequest + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._update_login_org_config_max_session_duration_endpoint.call_with_http_info(**kwargs) + def update_org_config( self, org_config_name: str, @@ -162,6 +223,29 @@ def update_org_config( return self._update_org_config_endpoint.call_with_http_info(**kwargs) + def update_org_saml_configurations( + self, + body: SamlConfigurationsUpdateRequest, + ) -> None: + """Update organization SAML preferences. + + Updates SAML preferences for an organization, including JIT provisioning domains and default role assignments. + + This endpoint allows you to configure: + + * ``jit_domains`` : List of domains for Just-In-Time user provisioning (up to 50 domains, 1-256 characters each) + * ``default_role_uuids`` : List of role UUIDs to assign to JIT-provisioned users (exactly 1 role required) + + Requires ``org_management`` permission. This endpoint is gated by the ``org-saml-preferences-api-gate`` experiment. + + :type body: SamlConfigurationsUpdateRequest + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._update_org_saml_configurations_endpoint.call_with_http_info(**kwargs) + def upload_idp_metadata( self, *, diff --git a/src/datadog_api_client/v2/model/max_session_duration_update_attributes.py b/src/datadog_api_client/v2/model/max_session_duration_update_attributes.py new file mode 100644 index 0000000000..094111867a --- /dev/null +++ b/src/datadog_api_client/v2/model/max_session_duration_update_attributes.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class MaxSessionDurationUpdateAttributes(ModelNormal): + validations = { + "max_session_duration": { + "inclusive_maximum": 86400, + "inclusive_minimum": 1, + }, + } + + @cached_property + def openapi_types(_): + return { + "max_session_duration": (int,), + } + + attribute_map = { + "max_session_duration": "max_session_duration", + } + + def __init__(self_, max_session_duration: int, **kwargs): + """ + Attributes for updating maximum session duration. + + :param max_session_duration: Maximum session duration in seconds. Must not exceed 24 hours (86400 seconds). + :type max_session_duration: int + """ + super().__init__(kwargs) + + self_.max_session_duration = max_session_duration diff --git a/src/datadog_api_client/v2/model/max_session_duration_update_request.py b/src/datadog_api_client/v2/model/max_session_duration_update_request.py new file mode 100644 index 0000000000..8a817d61b2 --- /dev/null +++ b/src/datadog_api_client/v2/model/max_session_duration_update_request.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.max_session_duration_update_request_data import MaxSessionDurationUpdateRequestData + + +class MaxSessionDurationUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.max_session_duration_update_request_data import ( + MaxSessionDurationUpdateRequestData, + ) + + return { + "data": (MaxSessionDurationUpdateRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: MaxSessionDurationUpdateRequestData, **kwargs): + """ + Request to update the maximum session duration. + + :param data: Data wrapper for maximum session duration update. + :type data: MaxSessionDurationUpdateRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/max_session_duration_update_request_data.py b/src/datadog_api_client/v2/model/max_session_duration_update_request_data.py new file mode 100644 index 0000000000..a0aa226e30 --- /dev/null +++ b/src/datadog_api_client/v2/model/max_session_duration_update_request_data.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.max_session_duration_update_attributes import MaxSessionDurationUpdateAttributes + from datadog_api_client.v2.model.max_session_duration_update_request_data_type import ( + MaxSessionDurationUpdateRequestDataType, + ) + + +class MaxSessionDurationUpdateRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.max_session_duration_update_attributes import ( + MaxSessionDurationUpdateAttributes, + ) + from datadog_api_client.v2.model.max_session_duration_update_request_data_type import ( + MaxSessionDurationUpdateRequestDataType, + ) + + return { + "attributes": (MaxSessionDurationUpdateAttributes,), + "type": (MaxSessionDurationUpdateRequestDataType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: MaxSessionDurationUpdateAttributes, type: MaxSessionDurationUpdateRequestDataType, **kwargs + ): + """ + Data wrapper for maximum session duration update. + + :param attributes: Attributes for updating maximum session duration. + :type attributes: MaxSessionDurationUpdateAttributes + + :param type: Type of the resource. + :type type: MaxSessionDurationUpdateRequestDataType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/max_session_duration_update_request_data_type.py b/src/datadog_api_client/v2/model/max_session_duration_update_request_data_type.py new file mode 100644 index 0000000000..a3f62b99e0 --- /dev/null +++ b/src/datadog_api_client/v2/model/max_session_duration_update_request_data_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class MaxSessionDurationUpdateRequestDataType(ModelSimple): + """ + Type of the resource. + + :param value: If omitted defaults to "max_session_duration". Must be one of ["max_session_duration"]. + :type value: str + """ + + allowed_values = { + "max_session_duration", + } + MAX_SESSION_DURATION: ClassVar["MaxSessionDurationUpdateRequestDataType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MaxSessionDurationUpdateRequestDataType.MAX_SESSION_DURATION = MaxSessionDurationUpdateRequestDataType( + "max_session_duration" +) diff --git a/src/datadog_api_client/v2/model/saml_configurations_update_attributes.py b/src/datadog_api_client/v2/model/saml_configurations_update_attributes.py new file mode 100644 index 0000000000..9717a3ed53 --- /dev/null +++ b/src/datadog_api_client/v2/model/saml_configurations_update_attributes.py @@ -0,0 +1,52 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + UUID, +) + + +class SamlConfigurationsUpdateAttributes(ModelNormal): + validations = { + "default_role_uuids": { + "max_items": 1, + "min_items": 1, + }, + "jit_domains": { + "max_items": 50, + }, + } + + @cached_property + def openapi_types(_): + return { + "default_role_uuids": ([UUID],), + "jit_domains": ([str],), + } + + attribute_map = { + "default_role_uuids": "default_role_uuids", + "jit_domains": "jit_domains", + } + + def __init__(self_, default_role_uuids: List[UUID], jit_domains: List[str], **kwargs): + """ + Attributes for updating SAML preferences. + + :param default_role_uuids: List of role UUIDs to assign to JIT-provisioned users. Exactly 1 role is required. + :type default_role_uuids: [UUID] + + :param jit_domains: List of domains for Just-In-Time user provisioning. Maximum 50 domains. + Each domain must be between 1 and 256 characters. + :type jit_domains: [str] + """ + super().__init__(kwargs) + + self_.default_role_uuids = default_role_uuids + self_.jit_domains = jit_domains diff --git a/src/datadog_api_client/v2/model/saml_configurations_update_request.py b/src/datadog_api_client/v2/model/saml_configurations_update_request.py new file mode 100644 index 0000000000..961543177b --- /dev/null +++ b/src/datadog_api_client/v2/model/saml_configurations_update_request.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.saml_configurations_update_request_data import SamlConfigurationsUpdateRequestData + + +class SamlConfigurationsUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.saml_configurations_update_request_data import ( + SamlConfigurationsUpdateRequestData, + ) + + return { + "data": (SamlConfigurationsUpdateRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: SamlConfigurationsUpdateRequestData, **kwargs): + """ + Request to update organization SAML preferences. + + :param data: Data wrapper for SAML preferences update. + :type data: SamlConfigurationsUpdateRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/saml_configurations_update_request_data.py b/src/datadog_api_client/v2/model/saml_configurations_update_request_data.py new file mode 100644 index 0000000000..e204f7f46b --- /dev/null +++ b/src/datadog_api_client/v2/model/saml_configurations_update_request_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.saml_configurations_update_attributes import SamlConfigurationsUpdateAttributes + from datadog_api_client.v2.model.saml_configurations_update_request_data_type import ( + SamlConfigurationsUpdateRequestDataType, + ) + + +class SamlConfigurationsUpdateRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.saml_configurations_update_attributes import SamlConfigurationsUpdateAttributes + from datadog_api_client.v2.model.saml_configurations_update_request_data_type import ( + SamlConfigurationsUpdateRequestDataType, + ) + + return { + "attributes": (SamlConfigurationsUpdateAttributes,), + "type": (SamlConfigurationsUpdateRequestDataType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: SamlConfigurationsUpdateAttributes, type: SamlConfigurationsUpdateRequestDataType, **kwargs + ): + """ + Data wrapper for SAML preferences update. + + :param attributes: Attributes for updating SAML preferences. + :type attributes: SamlConfigurationsUpdateAttributes + + :param type: Type of the resource. + :type type: SamlConfigurationsUpdateRequestDataType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/saml_configurations_update_request_data_type.py b/src/datadog_api_client/v2/model/saml_configurations_update_request_data_type.py new file mode 100644 index 0000000000..3874f24a7e --- /dev/null +++ b/src/datadog_api_client/v2/model/saml_configurations_update_request_data_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SamlConfigurationsUpdateRequestDataType(ModelSimple): + """ + Type of the resource. + + :param value: If omitted defaults to "saml_preferences". Must be one of ["saml_preferences"]. + :type value: str + """ + + allowed_values = { + "saml_preferences", + } + SAML_PREFERENCES: ClassVar["SamlConfigurationsUpdateRequestDataType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SamlConfigurationsUpdateRequestDataType.SAML_PREFERENCES = SamlConfigurationsUpdateRequestDataType("saml_preferences") diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 7587d2f4e0..84c980ce61 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -2809,6 +2809,12 @@ from datadog_api_client.v2.model.logs_warning import LogsWarning from datadog_api_client.v2.model.ms_teams_integration_metadata import MSTeamsIntegrationMetadata from datadog_api_client.v2.model.ms_teams_integration_metadata_teams_item import MSTeamsIntegrationMetadataTeamsItem +from datadog_api_client.v2.model.max_session_duration_update_attributes import MaxSessionDurationUpdateAttributes +from datadog_api_client.v2.model.max_session_duration_update_request import MaxSessionDurationUpdateRequest +from datadog_api_client.v2.model.max_session_duration_update_request_data import MaxSessionDurationUpdateRequestData +from datadog_api_client.v2.model.max_session_duration_update_request_data_type import ( + MaxSessionDurationUpdateRequestDataType, +) from datadog_api_client.v2.model.member_team import MemberTeam from datadog_api_client.v2.model.member_team_type import MemberTeamType from datadog_api_client.v2.model.metadata import Metadata @@ -4466,6 +4472,12 @@ from datadog_api_client.v2.model.slo_report_status_get_response import SLOReportStatusGetResponse from datadog_api_client.v2.model.slo_report_status_get_response_attributes import SLOReportStatusGetResponseAttributes from datadog_api_client.v2.model.slo_report_status_get_response_data import SLOReportStatusGetResponseData +from datadog_api_client.v2.model.saml_configurations_update_attributes import SamlConfigurationsUpdateAttributes +from datadog_api_client.v2.model.saml_configurations_update_request import SamlConfigurationsUpdateRequest +from datadog_api_client.v2.model.saml_configurations_update_request_data import SamlConfigurationsUpdateRequestData +from datadog_api_client.v2.model.saml_configurations_update_request_data_type import ( + SamlConfigurationsUpdateRequestDataType, +) from datadog_api_client.v2.model.sca_request import ScaRequest from datadog_api_client.v2.model.sca_request_data import ScaRequestData from datadog_api_client.v2.model.sca_request_data_attributes import ScaRequestDataAttributes @@ -8009,6 +8021,10 @@ "LogsWarning", "MSTeamsIntegrationMetadata", "MSTeamsIntegrationMetadataTeamsItem", + "MaxSessionDurationUpdateAttributes", + "MaxSessionDurationUpdateRequest", + "MaxSessionDurationUpdateRequestData", + "MaxSessionDurationUpdateRequestDataType", "MemberTeam", "MemberTeamType", "Metadata", @@ -9046,6 +9062,10 @@ "SLOReportStatusGetResponse", "SLOReportStatusGetResponseAttributes", "SLOReportStatusGetResponseData", + "SamlConfigurationsUpdateAttributes", + "SamlConfigurationsUpdateRequest", + "SamlConfigurationsUpdateRequestData", + "SamlConfigurationsUpdateRequestDataType", "ScaRequest", "ScaRequestData", "ScaRequestDataAttributes", diff --git a/tests/v2/features/organizations.feature b/tests/v2/features/organizations.feature index ddec7484e7..3c8445d660 100644 --- a/tests/v2/features/organizations.feature +++ b/tests/v2/features/organizations.feature @@ -65,6 +65,38 @@ Feature: Organizations When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/team-aaa-identity + Scenario: Update maximum session duration returns "Bad Request" response + Given operation "UpdateLoginOrgConfigMaxSessionDuration" enabled + And new "UpdateLoginOrgConfigMaxSessionDuration" request + And body with value {"data": {"attributes": {"max_session_duration": 60}, "type": "max_session_duration"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/team-aaa-identity + Scenario: Update maximum session duration returns "No Content - The maximum session duration was successfully updated." response + Given operation "UpdateLoginOrgConfigMaxSessionDuration" enabled + And new "UpdateLoginOrgConfigMaxSessionDuration" request + And body with value {"data": {"attributes": {"max_session_duration": 60}, "type": "max_session_duration"}} + When the request is sent + Then the response status is 204 No Content - The maximum session duration was successfully updated. + + @generated @skip @team:DataDog/team-aaa-identity + Scenario: Update organization SAML preferences returns "Bad Request" response + Given operation "UpdateOrgSamlConfigurations" enabled + And new "UpdateOrgSamlConfigurations" request + And body with value {"data": {"attributes": {"default_role_uuids": ["19fcc38b-b651-46a0-b463-1f8f56c6a862"], "jit_domains": ["example1.com", "example2.com"]}, "type": "saml_preferences"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/team-aaa-identity + Scenario: Update organization SAML preferences returns "No Content - The SAML preferences were successfully updated." response + Given operation "UpdateOrgSamlConfigurations" enabled + And new "UpdateOrgSamlConfigurations" request + And body with value {"data": {"attributes": {"default_role_uuids": ["19fcc38b-b651-46a0-b463-1f8f56c6a862"], "jit_domains": ["example1.com", "example2.com"]}, "type": "saml_preferences"}} + When the request is sent + Then the response status is 204 No Content - The SAML preferences were successfully updated. + @skip-go @skip-java @skip-python @skip-ruby @skip-rust @skip-terraform-config @skip-typescript @skip-validation @team:DataDog/team-aaa-identity Scenario: Upload IdP metadata returns "Bad Request - caused by either malformed XML or invalid SAML IdP metadata" response Given new "UploadIdPMetadata" request diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index c0ec7dbe41..68b7ccfcb3 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -2566,6 +2566,12 @@ "type": "idempotent" } }, + "UpdateLoginOrgConfigMaxSessionDuration": { + "tag": "Organizations", + "undo": { + "type": "idempotent" + } + }, "SubmitLog": { "tag": "Logs", "undo": { @@ -3289,6 +3295,12 @@ "type": "safe" } }, + "UpdateOrgSamlConfigurations": { + "tag": "Organizations", + "undo": { + "type": "idempotent" + } + }, "ListOrgConfigs": { "tag": "Organizations", "undo": {