diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index de1bbc1393..51127c3aea 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -75095,6 +75095,10 @@ components: type: integer product_scales: $ref: "#/components/schemas/RUMProductScales" + remote_config_id: + description: ID of the RUM SDK remote configuration for the application, if one exists. + example: abc12345-1234-5678-abcd-ef1234567890 + type: string type: description: "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`." example: browser @@ -80169,6 +80173,380 @@ components: $ref: "#/components/schemas/RumRetentionFilterData" type: array type: object + RumSdkConfigAllowedTracingUrlList: + description: A list of URL configurations for distributed tracing. + items: + $ref: "#/components/schemas/RumSdkConfigTracingUrlConfig" + type: array + RumSdkConfigAllowedTrackingOriginList: + description: A list of origin patterns allowed for cross-origin session tracking. + items: + $ref: "#/components/schemas/RumSdkConfigMatchOption" + type: array + RumSdkConfigAttributes: + description: Attributes of the RUM SDK configuration. + properties: + rum: + $ref: "#/components/schemas/RumSdkConfigRumAttributes" + required: + - rum + type: object + RumSdkConfigData: + description: The RUM SDK configuration data object. + properties: + attributes: + $ref: "#/components/schemas/RumSdkConfigAttributes" + id: + description: The unique identifier of the RUM SDK configuration. + example: "abc12345-1234-5678-abcd-ef1234567890" + type: string + meta: + $ref: "#/components/schemas/RumSdkConfigMeta" + type: + $ref: "#/components/schemas/RumSdkConfigType" + required: + - id + - type + - attributes + type: object + RumSdkConfigDynamicOption: + description: A dynamic configuration option that extracts a value at runtime using a specified strategy. + properties: + attribute: + description: The element attribute to read. Used when `strategy` is `dom`. + example: "data-version" + type: string + extractor: + $ref: "#/components/schemas/RumSdkConfigSerializedRegex" + key: + description: The `localStorage` key to read. Required when `strategy` is `localStorage`. + example: "app.version" + type: string + name: + description: The cookie name to read. Required when `strategy` is `cookie`. + example: "app_version" + type: string + path: + description: The JavaScript path used to extract the value. Required when `strategy` is `js`. + example: "application.version" + type: string + rc_serialized_type: + $ref: "#/components/schemas/RumSdkConfigDynamicOptionSerializedType" + selector: + description: The CSS selector to read from the page. Required when `strategy` is `dom`. + example: "#app-version" + type: string + strategy: + $ref: "#/components/schemas/RumSdkConfigDynamicOptionStrategy" + required: + - rc_serialized_type + - strategy + type: object + RumSdkConfigDynamicOptionPair: + description: A key-value pair where the value is a dynamic configuration option. + properties: + key: + description: The key name for this dynamic configuration pair. + example: "id" + type: string + value: + $ref: "#/components/schemas/RumSdkConfigDynamicOption" + required: + - key + - value + type: object + RumSdkConfigDynamicOptionPairList: + description: A list of dynamic option key-value pairs. + items: + $ref: "#/components/schemas/RumSdkConfigDynamicOptionPair" + type: array + RumSdkConfigDynamicOptionSerializedType: + description: The type identifier for a dynamic option. Always `dynamic`. + enum: + - dynamic + example: dynamic + type: string + x-enum-varnames: + - DYNAMIC + RumSdkConfigDynamicOptionStrategy: + description: The strategy used to extract the dynamic value. + enum: + - js + - cookie + - dom + - localStorage + example: js + type: string + x-enum-varnames: + - JS + - COOKIE + - DOM + - LOCAL_STORAGE + RumSdkConfigMatchOption: + description: A match option used for URL or origin pattern matching. + properties: + rc_serialized_type: + $ref: "#/components/schemas/RumSdkConfigMatchOptionSerializedType" + value: + description: The value to match against. + example: "https://app.datadoghq.com" + type: string + required: + - rc_serialized_type + - value + type: object + RumSdkConfigMatchOptionSerializedType: + description: The type of match pattern, either a literal string or a regex. + enum: + - string + - regex + example: string + type: string + x-enum-varnames: + - STRING + - REGEX + RumSdkConfigMeta: + description: Metadata associated with a RUM SDK configuration. + properties: + updated_at: + description: The timestamp of the last update to this configuration. + example: "2024-01-15T09:30:00.000Z" + format: date-time + type: string + updated_by: + description: The handle of the user who last updated this configuration. + example: "user@datadoghq.com" + type: string + required: + - updated_at + - updated_by + type: object + RumSdkConfigResponse: + description: Response containing a RUM SDK configuration. + properties: + data: + $ref: "#/components/schemas/RumSdkConfigData" + required: + - data + type: object + RumSdkConfigRumAttributes: + description: The RUM SDK settings for a configuration. + properties: + allowed_tracing_urls: + $ref: "#/components/schemas/RumSdkConfigAllowedTracingUrlList" + allowed_tracking_origins: + $ref: "#/components/schemas/RumSdkConfigAllowedTrackingOriginList" + application_id: + description: The ID of the RUM application this configuration belongs to. + example: "f80e917c-3cd0-4048-ade7-1c4c207baa99" + type: string + context: + $ref: "#/components/schemas/RumSdkConfigDynamicOptionPairList" + default_privacy_level: + description: The default privacy masking level applied to all RUM data. + example: "mask-user-input" + type: string + enable_privacy_for_action_name: + description: Whether to mask user-interaction action names for privacy. + example: false + type: boolean + env: + description: The environment tag for the RUM application. + example: "production" + type: string + service: + description: The service name tag for the RUM application. + example: "my-service" + type: string + session_replay_sample_rate: + description: The percentage of collected sessions for which a replay is captured (0–100). + example: 10 + format: int64 + maximum: 100 + minimum: 0 + type: integer + session_sample_rate: + description: The percentage of user sessions to collect (0–100). + example: 50 + format: int64 + maximum: 100 + minimum: 0 + type: integer + trace_sample_rate: + description: The percentage of requests to forward as APM traces (0–100). + example: 100 + format: int64 + maximum: 100 + minimum: 0 + type: integer + track_session_across_subdomains: + description: Whether to share a session across subdomains of the same site. + example: false + type: boolean + user: + $ref: "#/components/schemas/RumSdkConfigDynamicOptionPairList" + version: + $ref: "#/components/schemas/RumSdkConfigDynamicOption" + required: + - application_id + - session_sample_rate + - session_replay_sample_rate + - default_privacy_level + - enable_privacy_for_action_name + type: object + RumSdkConfigRumUpdateAttributes: + description: The RUM SDK settings to apply when updating a configuration. + properties: + allowed_tracing_urls: + $ref: "#/components/schemas/RumSdkConfigAllowedTracingUrlList" + allowed_tracking_origins: + $ref: "#/components/schemas/RumSdkConfigAllowedTrackingOriginList" + context: + $ref: "#/components/schemas/RumSdkConfigDynamicOptionPairList" + default_privacy_level: + description: The default privacy masking level applied to all RUM data. + example: "mask" + type: string + enable_privacy_for_action_name: + description: Whether to mask user-interaction action names for privacy. + example: true + type: boolean + env: + description: The environment tag for the RUM application. + example: "production" + type: string + service: + description: The service name tag for the RUM application. + example: "my-service" + type: string + session_replay_sample_rate: + description: The percentage of collected sessions for which a replay is captured (0–100). + example: 20 + format: int64 + maximum: 100 + minimum: 0 + type: integer + session_sample_rate: + description: The percentage of user sessions to collect (0–100). + example: 75 + format: int64 + maximum: 100 + minimum: 0 + type: integer + trace_sample_rate: + description: The percentage of requests to forward as APM traces (0–100). + example: 100 + format: int64 + maximum: 100 + minimum: 0 + type: integer + track_session_across_subdomains: + description: Whether to share a session across subdomains of the same site. + example: false + type: boolean + user: + $ref: "#/components/schemas/RumSdkConfigDynamicOptionPairList" + version: + $ref: "#/components/schemas/RumSdkConfigDynamicOption" + required: + - session_sample_rate + - session_replay_sample_rate + - default_privacy_level + - enable_privacy_for_action_name + type: object + RumSdkConfigSerializedRegex: + description: A serialized regex used as an extractor in dynamic options. + properties: + rc_serialized_type: + $ref: "#/components/schemas/RumSdkConfigSerializedRegexType" + value: + description: The regex pattern used for extraction. + example: "^https://app-.*.datadoghq.com" + type: string + required: + - rc_serialized_type + - value + type: object + RumSdkConfigSerializedRegexType: + description: The type identifier for a serialized regex. Always `regex`. + enum: + - regex + example: regex + type: string + x-enum-varnames: + - REGEX + RumSdkConfigTracingUrlConfig: + description: Configuration for a URL that should have distributed tracing enabled. + properties: + match: + $ref: "#/components/schemas/RumSdkConfigMatchOption" + propagator_types: + description: The list of trace propagator types to use for this URL. + example: + - datadog + - tracecontext + items: + $ref: "#/components/schemas/RumSdkConfigTracingUrlPropagatorType" + type: array + required: + - match + - propagator_types + type: object + RumSdkConfigTracingUrlPropagatorType: + description: A trace propagator type. + enum: + - datadog + - b3 + - b3multi + - tracecontext + example: datadog + type: string + x-enum-varnames: + - DATADOG + - B3 + - B3MULTI + - TRACECONTEXT + RumSdkConfigType: + default: rum_sdk_config + description: The type of the resource. The value should always be `rum_sdk_config`. + enum: + - rum_sdk_config + example: rum_sdk_config + type: string + x-enum-varnames: + - RUM_SDK_CONFIG + RumSdkConfigUpdateAttributes: + description: Attributes of the RUM SDK configuration to update. + properties: + rum: + $ref: "#/components/schemas/RumSdkConfigRumUpdateAttributes" + required: + - rum + type: object + RumSdkConfigUpdateData: + description: The data object for updating a RUM SDK configuration. + properties: + attributes: + $ref: "#/components/schemas/RumSdkConfigUpdateAttributes" + id: + description: The ID of the RUM SDK configuration to update. + example: "abc12345-1234-5678-abcd-ef1234567890" + type: string + type: + $ref: "#/components/schemas/RumSdkConfigType" + required: + - id + - type + - attributes + type: object + RumSdkConfigUpdateRequest: + description: Request body for updating a RUM SDK configuration. + properties: + data: + $ref: "#/components/schemas/RumSdkConfigUpdateData" + required: + - data + type: object RunDataObservabilityMonitorResponse: description: The response returned when a data observability monitor run is triggered. properties: @@ -162337,6 +162715,136 @@ paths: summary: Update a Workload Protection policy tags: ["CSM Threats"] x-codegen-request-body-name: body + /api/v2/remote_config/products/rum/configs/{config_id}: + get: + description: Retrieve a RUM SDK configuration by its identifier. + operationId: GetRumSdkConfig + parameters: + - description: The ID of the RUM SDK configuration. + example: "abc12345-1234-5678-abcd-ef1234567890" + in: path + name: config_id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + rum: + application_id: "f80e917c-3cd0-4048-ade7-1c4c207baa99" + default_privacy_level: "mask-user-input" + enable_privacy_for_action_name: false + env: "production" + service: "my-service" + session_replay_sample_rate: 10 + session_sample_rate: 50 + trace_sample_rate: 100 + track_session_across_subdomains: false + id: "abc12345-1234-5678-abcd-ef1234567890" + meta: + updated_at: "2024-01-15T09:30:00.000Z" + updated_by: "user@datadoghq.com" + type: rum_sdk_config + schema: + $ref: "#/components/schemas/RumSdkConfigResponse" + description: OK + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a RUM SDK configuration + tags: + - RUM Remote Config + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + put: + description: |- + Update an existing RUM SDK configuration by its identifier. + Returns the updated configuration when successful. + operationId: UpdateRumSdkConfig + parameters: + - description: The ID of the RUM SDK configuration. + example: "abc12345-1234-5678-abcd-ef1234567890" + in: path + name: config_id + required: true + schema: + type: string + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + rum: + default_privacy_level: "mask" + enable_privacy_for_action_name: true + session_replay_sample_rate: 20 + session_sample_rate: 75 + id: "abc12345-1234-5678-abcd-ef1234567890" + type: rum_sdk_config + schema: + $ref: "#/components/schemas/RumSdkConfigUpdateRequest" + description: The RUM SDK configuration update. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + rum: + application_id: "f80e917c-3cd0-4048-ade7-1c4c207baa99" + default_privacy_level: "mask" + enable_privacy_for_action_name: true + session_replay_sample_rate: 20 + session_sample_rate: 75 + id: "abc12345-1234-5678-abcd-ef1234567890" + type: rum_sdk_config + schema: + $ref: "#/components/schemas/RumSdkConfigResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Update a RUM SDK configuration + tags: + - RUM Remote Config + x-codegen-request-body-name: body + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/replay/heatmap/snapshots: get: description: List heatmap snapshots. @@ -192882,6 +193390,12 @@ tags: - description: |- Get insights into the performance of your Real User Monitoring (RUM) applications over HTTP. See the [RUM & Session Replay page](https://docs.datadoghq.com/real_user_monitoring/) for more information name: RUM Insights + - description: |- + Manage [RUM SDK configurations](https://docs.datadoghq.com/real_user_monitoring/) delivered to RUM applications via Remote Configuration. + externalDocs: + description: Find out more at + url: https://docs.datadoghq.com/real_user_monitoring/ + name: RUM Remote Config - description: View and manage Reference Tables in your organization. name: Reference Tables - description: |- diff --git a/docs/datadog_api_client.v2.api.rst b/docs/datadog_api_client.v2.api.rst index 60b434f7e3..972863d62b 100644 --- a/docs/datadog_api_client.v2.api.rst +++ b/docs/datadog_api_client.v2.api.rst @@ -690,6 +690,13 @@ datadog\_api\_client.v2.api.rum\_rate\_limit\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.rum\_remote\_config\_api module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.rum_remote_config_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.rum\_replay\_heatmaps\_api module ------------------------------------------------------------- diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index aa19c0dfea..791e481a7b 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -34213,6 +34213,146 @@ datadog\_api\_client.v2.model.rum\_retention\_filters\_response module :members: :show-inheritance: +datadog\_api\_client.v2.model.rum\_sdk\_config\_attributes module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_data module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_dynamic\_option module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_dynamic_option + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_dynamic\_option\_pair module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_dynamic_option_pair + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_dynamic\_option\_serialized\_type module +---------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_dynamic_option_serialized_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_dynamic\_option\_strategy module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_dynamic_option_strategy + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_match\_option module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_match_option + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_match\_option\_serialized\_type module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_match_option_serialized_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_meta module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_meta + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_response module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_rum\_attributes module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_rum_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_rum\_update\_attributes module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_rum_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_serialized\_regex module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_serialized_regex + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_serialized\_regex\_type module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_serialized_regex_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_tracing\_url\_config module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_tracing_url_config + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_tracing\_url\_propagator\_type module +------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_tracing_url_propagator_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_type module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_update\_attributes module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_update\_data module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_update_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_sdk\_config\_update\_request module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_sdk_config_update_request + :members: + :show-inheritance: + datadog\_api\_client.v2.model.rum\_search\_events\_request module ----------------------------------------------------------------- diff --git a/examples/v2/rum-remote-config/GetRumSdkConfig.py b/examples/v2/rum-remote-config/GetRumSdkConfig.py new file mode 100644 index 0000000000..0cddb99cfd --- /dev/null +++ b/examples/v2/rum-remote-config/GetRumSdkConfig.py @@ -0,0 +1,16 @@ +""" +Get a RUM SDK configuration returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_remote_config_api import RUMRemoteConfigApi + +configuration = Configuration() +configuration.unstable_operations["get_rum_sdk_config"] = True +with ApiClient(configuration) as api_client: + api_instance = RUMRemoteConfigApi(api_client) + response = api_instance.get_rum_sdk_config( + config_id="config_id", + ) + + print(response) diff --git a/examples/v2/rum-remote-config/UpdateRumSdkConfig.py b/examples/v2/rum-remote-config/UpdateRumSdkConfig.py new file mode 100644 index 0000000000..761cfcb0dc --- /dev/null +++ b/examples/v2/rum-remote-config/UpdateRumSdkConfig.py @@ -0,0 +1,119 @@ +""" +Update a RUM SDK configuration returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_remote_config_api import RUMRemoteConfigApi +from datadog_api_client.v2.model.rum_sdk_config_dynamic_option import RumSdkConfigDynamicOption +from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_pair import RumSdkConfigDynamicOptionPair +from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_serialized_type import ( + RumSdkConfigDynamicOptionSerializedType, +) +from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_strategy import RumSdkConfigDynamicOptionStrategy +from datadog_api_client.v2.model.rum_sdk_config_match_option import RumSdkConfigMatchOption +from datadog_api_client.v2.model.rum_sdk_config_match_option_serialized_type import ( + RumSdkConfigMatchOptionSerializedType, +) +from datadog_api_client.v2.model.rum_sdk_config_rum_update_attributes import RumSdkConfigRumUpdateAttributes +from datadog_api_client.v2.model.rum_sdk_config_serialized_regex import RumSdkConfigSerializedRegex +from datadog_api_client.v2.model.rum_sdk_config_serialized_regex_type import RumSdkConfigSerializedRegexType +from datadog_api_client.v2.model.rum_sdk_config_tracing_url_config import RumSdkConfigTracingUrlConfig +from datadog_api_client.v2.model.rum_sdk_config_tracing_url_propagator_type import RumSdkConfigTracingUrlPropagatorType +from datadog_api_client.v2.model.rum_sdk_config_type import RumSdkConfigType +from datadog_api_client.v2.model.rum_sdk_config_update_attributes import RumSdkConfigUpdateAttributes +from datadog_api_client.v2.model.rum_sdk_config_update_data import RumSdkConfigUpdateData +from datadog_api_client.v2.model.rum_sdk_config_update_request import RumSdkConfigUpdateRequest + +body = RumSdkConfigUpdateRequest( + data=RumSdkConfigUpdateData( + attributes=RumSdkConfigUpdateAttributes( + rum=RumSdkConfigRumUpdateAttributes( + allowed_tracing_urls=[ + RumSdkConfigTracingUrlConfig( + match=RumSdkConfigMatchOption( + rc_serialized_type=RumSdkConfigMatchOptionSerializedType.STRING, + value="https://app.datadoghq.com", + ), + propagator_types=[ + RumSdkConfigTracingUrlPropagatorType.DATADOG, + RumSdkConfigTracingUrlPropagatorType.TRACECONTEXT, + ], + ), + ], + allowed_tracking_origins=[ + RumSdkConfigMatchOption( + rc_serialized_type=RumSdkConfigMatchOptionSerializedType.STRING, + value="https://app.datadoghq.com", + ), + ], + context=[ + RumSdkConfigDynamicOptionPair( + key="id", + value=RumSdkConfigDynamicOption( + attribute="data-version", + extractor=RumSdkConfigSerializedRegex( + rc_serialized_type=RumSdkConfigSerializedRegexType.REGEX, + value="^https://app-.*.datadoghq.com", + ), + key="app.version", + name="app_version", + path="application.version", + rc_serialized_type=RumSdkConfigDynamicOptionSerializedType.DYNAMIC, + selector="#app-version", + strategy=RumSdkConfigDynamicOptionStrategy.JS, + ), + ), + ], + default_privacy_level="mask", + enable_privacy_for_action_name=True, + env="production", + service="my-service", + session_replay_sample_rate=20, + session_sample_rate=75, + trace_sample_rate=100, + track_session_across_subdomains=False, + user=[ + RumSdkConfigDynamicOptionPair( + key="id", + value=RumSdkConfigDynamicOption( + attribute="data-version", + extractor=RumSdkConfigSerializedRegex( + rc_serialized_type=RumSdkConfigSerializedRegexType.REGEX, + value="^https://app-.*.datadoghq.com", + ), + key="app.version", + name="app_version", + path="application.version", + rc_serialized_type=RumSdkConfigDynamicOptionSerializedType.DYNAMIC, + selector="#app-version", + strategy=RumSdkConfigDynamicOptionStrategy.JS, + ), + ), + ], + version=RumSdkConfigDynamicOption( + attribute="data-version", + extractor=RumSdkConfigSerializedRegex( + rc_serialized_type=RumSdkConfigSerializedRegexType.REGEX, + value="^https://app-.*.datadoghq.com", + ), + key="app.version", + name="app_version", + path="application.version", + rc_serialized_type=RumSdkConfigDynamicOptionSerializedType.DYNAMIC, + selector="#app-version", + strategy=RumSdkConfigDynamicOptionStrategy.JS, + ), + ), + ), + id="abc12345-1234-5678-abcd-ef1234567890", + type=RumSdkConfigType.RUM_SDK_CONFIG, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_rum_sdk_config"] = True +with ApiClient(configuration) as api_client: + api_instance = RUMRemoteConfigApi(api_client) + response = api_instance.update_rum_sdk_config(config_id="config_id", body=body) + + print(response) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index 8a2a543e07..0694277a12 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -692,6 +692,8 @@ def __init__( "v2.get_pruned_trace_by_id": False, "v2.get_trace_by_id": False, "v2.get_asm_service_by_name": False, + "v2.get_rum_sdk_config": False, + "v2.update_rum_sdk_config": False, "v2.create_report_schedule": False, "v2.patch_report_schedule": False, "v2.delete_sourcemaps": False, diff --git a/src/datadog_api_client/v2/api/rum_remote_config_api.py b/src/datadog_api_client/v2/api/rum_remote_config_api.py new file mode 100644 index 0000000000..01c6415f52 --- /dev/null +++ b/src/datadog_api_client/v2/api/rum_remote_config_api.py @@ -0,0 +1,111 @@ +# 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 Any, Dict + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.v2.model.rum_sdk_config_response import RumSdkConfigResponse +from datadog_api_client.v2.model.rum_sdk_config_update_request import RumSdkConfigUpdateRequest + + +class RUMRemoteConfigApi: + """ + Manage `RUM SDK configurations `_ delivered to RUM applications via Remote Configuration. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._get_rum_sdk_config_endpoint = _Endpoint( + settings={ + "response_type": (RumSdkConfigResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/remote_config/products/rum/configs/{config_id}", + "operation_id": "get_rum_sdk_config", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "config_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._update_rum_sdk_config_endpoint = _Endpoint( + settings={ + "response_type": (RumSdkConfigResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/remote_config/products/rum/configs/{config_id}", + "operation_id": "update_rum_sdk_config", + "http_method": "PUT", + "version": "v2", + }, + params_map={ + "config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "config_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (RumSdkConfigUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + def get_rum_sdk_config( + self, + config_id: str, + ) -> RumSdkConfigResponse: + """Get a RUM SDK configuration. + + Retrieve a RUM SDK configuration by its identifier. + + :param config_id: The ID of the RUM SDK configuration. + :type config_id: str + :rtype: RumSdkConfigResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["config_id"] = config_id + + return self._get_rum_sdk_config_endpoint.call_with_http_info(**kwargs) + + def update_rum_sdk_config( + self, + config_id: str, + body: RumSdkConfigUpdateRequest, + ) -> RumSdkConfigResponse: + """Update a RUM SDK configuration. + + Update an existing RUM SDK configuration by its identifier. + Returns the updated configuration when successful. + + :param config_id: The ID of the RUM SDK configuration. + :type config_id: str + :param body: The RUM SDK configuration update. + :type body: RumSdkConfigUpdateRequest + :rtype: RumSdkConfigResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["config_id"] = config_id + + kwargs["body"] = body + + return self._update_rum_sdk_config_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/apis/__init__.py b/src/datadog_api_client/v2/apis/__init__.py index 64095ed8e2..f37e2eebe2 100644 --- a/src/datadog_api_client/v2/apis/__init__.py +++ b/src/datadog_api_client/v2/apis/__init__.py @@ -89,6 +89,7 @@ from datadog_api_client.v2.api.product_analytics_api import ProductAnalyticsApi from datadog_api_client.v2.api.rum_api import RUMApi from datadog_api_client.v2.api.rum_insights_api import RUMInsightsApi +from datadog_api_client.v2.api.rum_remote_config_api import RUMRemoteConfigApi from datadog_api_client.v2.api.reference_tables_api import ReferenceTablesApi from datadog_api_client.v2.api.report_schedules_api import ReportSchedulesApi from datadog_api_client.v2.api.restriction_policies_api import RestrictionPoliciesApi @@ -224,6 +225,7 @@ "ProductAnalyticsApi", "RUMApi", "RUMInsightsApi", + "RUMRemoteConfigApi", "ReferenceTablesApi", "ReportSchedulesApi", "RestrictionPoliciesApi", diff --git a/src/datadog_api_client/v2/model/rum_application_attributes.py b/src/datadog_api_client/v2/model/rum_application_attributes.py index 7e0b4fe94a..fa36f8eb7e 100644 --- a/src/datadog_api_client/v2/model/rum_application_attributes.py +++ b/src/datadog_api_client/v2/model/rum_application_attributes.py @@ -42,6 +42,7 @@ def openapi_types(_): "name": (str,), "org_id": (int,), "product_scales": (RUMProductScales,), + "remote_config_id": (str,), "type": (str,), "updated_at": (int,), "updated_by_handle": (str,), @@ -58,6 +59,7 @@ def openapi_types(_): "name": "name", "org_id": "org_id", "product_scales": "product_scales", + "remote_config_id": "remote_config_id", "type": "type", "updated_at": "updated_at", "updated_by_handle": "updated_by_handle", @@ -78,6 +80,7 @@ def __init__( hash: Union[str, UnsetType] = unset, is_active: Union[bool, UnsetType] = unset, product_scales: Union[RUMProductScales, UnsetType] = unset, + remote_config_id: Union[str, UnsetType] = unset, **kwargs, ): """ @@ -113,6 +116,9 @@ def __init__( :param product_scales: Product Scales configuration for the RUM application. :type product_scales: RUMProductScales, optional + :param remote_config_id: ID of the RUM SDK remote configuration for the application, if one exists. + :type remote_config_id: str, optional + :param type: Type of the RUM application. Supported values are ``browser`` , ``ios`` , ``android`` , ``react-native`` , ``flutter`` , ``roku`` , ``electron`` , ``unity`` , ``kotlin-multiplatform``. :type type: str @@ -130,6 +136,8 @@ def __init__( kwargs["is_active"] = is_active if product_scales is not unset: kwargs["product_scales"] = product_scales + if remote_config_id is not unset: + kwargs["remote_config_id"] = remote_config_id super().__init__(kwargs) self_.application_id = application_id diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_attributes.py b/src/datadog_api_client/v2/model/rum_sdk_config_attributes.py new file mode 100644 index 0000000000..45d701d430 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_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 typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_rum_attributes import RumSdkConfigRumAttributes + + +class RumSdkConfigAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_rum_attributes import RumSdkConfigRumAttributes + + return { + "rum": (RumSdkConfigRumAttributes,), + } + + attribute_map = { + "rum": "rum", + } + + def __init__(self_, rum: RumSdkConfigRumAttributes, **kwargs): + """ + Attributes of the RUM SDK configuration. + + :param rum: The RUM SDK settings for a configuration. + :type rum: RumSdkConfigRumAttributes + """ + super().__init__(kwargs) + + self_.rum = rum diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_data.py b/src/datadog_api_client/v2/model/rum_sdk_config_data.py new file mode 100644 index 0000000000..2930652307 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_data.py @@ -0,0 +1,72 @@ +# 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 Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_attributes import RumSdkConfigAttributes + from datadog_api_client.v2.model.rum_sdk_config_meta import RumSdkConfigMeta + from datadog_api_client.v2.model.rum_sdk_config_type import RumSdkConfigType + + +class RumSdkConfigData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_attributes import RumSdkConfigAttributes + from datadog_api_client.v2.model.rum_sdk_config_meta import RumSdkConfigMeta + from datadog_api_client.v2.model.rum_sdk_config_type import RumSdkConfigType + + return { + "attributes": (RumSdkConfigAttributes,), + "id": (str,), + "meta": (RumSdkConfigMeta,), + "type": (RumSdkConfigType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "meta": "meta", + "type": "type", + } + + def __init__( + self_, + attributes: RumSdkConfigAttributes, + id: str, + type: RumSdkConfigType, + meta: Union[RumSdkConfigMeta, UnsetType] = unset, + **kwargs, + ): + """ + The RUM SDK configuration data object. + + :param attributes: Attributes of the RUM SDK configuration. + :type attributes: RumSdkConfigAttributes + + :param id: The unique identifier of the RUM SDK configuration. + :type id: str + + :param meta: Metadata associated with a RUM SDK configuration. + :type meta: RumSdkConfigMeta, optional + + :param type: The type of the resource. The value should always be ``rum_sdk_config``. + :type type: RumSdkConfigType + """ + if meta is not unset: + kwargs["meta"] = meta + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option.py b/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option.py new file mode 100644 index 0000000000..0719db1d2a --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option.py @@ -0,0 +1,109 @@ +# 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 Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_serialized_regex import RumSdkConfigSerializedRegex + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_serialized_type import ( + RumSdkConfigDynamicOptionSerializedType, + ) + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_strategy import RumSdkConfigDynamicOptionStrategy + + +class RumSdkConfigDynamicOption(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_serialized_regex import RumSdkConfigSerializedRegex + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_serialized_type import ( + RumSdkConfigDynamicOptionSerializedType, + ) + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_strategy import RumSdkConfigDynamicOptionStrategy + + return { + "attribute": (str,), + "extractor": (RumSdkConfigSerializedRegex,), + "key": (str,), + "name": (str,), + "path": (str,), + "rc_serialized_type": (RumSdkConfigDynamicOptionSerializedType,), + "selector": (str,), + "strategy": (RumSdkConfigDynamicOptionStrategy,), + } + + attribute_map = { + "attribute": "attribute", + "extractor": "extractor", + "key": "key", + "name": "name", + "path": "path", + "rc_serialized_type": "rc_serialized_type", + "selector": "selector", + "strategy": "strategy", + } + + def __init__( + self_, + rc_serialized_type: RumSdkConfigDynamicOptionSerializedType, + strategy: RumSdkConfigDynamicOptionStrategy, + attribute: Union[str, UnsetType] = unset, + extractor: Union[RumSdkConfigSerializedRegex, UnsetType] = unset, + key: Union[str, UnsetType] = unset, + name: Union[str, UnsetType] = unset, + path: Union[str, UnsetType] = unset, + selector: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A dynamic configuration option that extracts a value at runtime using a specified strategy. + + :param attribute: The element attribute to read. Used when ``strategy`` is ``dom``. + :type attribute: str, optional + + :param extractor: A serialized regex used as an extractor in dynamic options. + :type extractor: RumSdkConfigSerializedRegex, optional + + :param key: The ``localStorage`` key to read. Required when ``strategy`` is ``localStorage``. + :type key: str, optional + + :param name: The cookie name to read. Required when ``strategy`` is ``cookie``. + :type name: str, optional + + :param path: The JavaScript path used to extract the value. Required when ``strategy`` is ``js``. + :type path: str, optional + + :param rc_serialized_type: The type identifier for a dynamic option. Always ``dynamic``. + :type rc_serialized_type: RumSdkConfigDynamicOptionSerializedType + + :param selector: The CSS selector to read from the page. Required when ``strategy`` is ``dom``. + :type selector: str, optional + + :param strategy: The strategy used to extract the dynamic value. + :type strategy: RumSdkConfigDynamicOptionStrategy + """ + if attribute is not unset: + kwargs["attribute"] = attribute + if extractor is not unset: + kwargs["extractor"] = extractor + if key is not unset: + kwargs["key"] = key + if name is not unset: + kwargs["name"] = name + if path is not unset: + kwargs["path"] = path + if selector is not unset: + kwargs["selector"] = selector + super().__init__(kwargs) + + self_.rc_serialized_type = rc_serialized_type + self_.strategy = strategy diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_pair.py b/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_pair.py new file mode 100644 index 0000000000..a92ab237ec --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_pair.py @@ -0,0 +1,46 @@ +# 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.rum_sdk_config_dynamic_option import RumSdkConfigDynamicOption + + +class RumSdkConfigDynamicOptionPair(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option import RumSdkConfigDynamicOption + + return { + "key": (str,), + "value": (RumSdkConfigDynamicOption,), + } + + attribute_map = { + "key": "key", + "value": "value", + } + + def __init__(self_, key: str, value: RumSdkConfigDynamicOption, **kwargs): + """ + A key-value pair where the value is a dynamic configuration option. + + :param key: The key name for this dynamic configuration pair. + :type key: str + + :param value: A dynamic configuration option that extracts a value at runtime using a specified strategy. + :type value: RumSdkConfigDynamicOption + """ + super().__init__(kwargs) + + self_.key = key + self_.value = value diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_serialized_type.py b/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_serialized_type.py new file mode 100644 index 0000000000..268687b176 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_serialized_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 RumSdkConfigDynamicOptionSerializedType(ModelSimple): + """ + The type identifier for a dynamic option. Always `dynamic`. + + :param value: If omitted defaults to "dynamic". Must be one of ["dynamic"]. + :type value: str + """ + + allowed_values = { + "dynamic", + } + DYNAMIC: ClassVar["RumSdkConfigDynamicOptionSerializedType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumSdkConfigDynamicOptionSerializedType.DYNAMIC = RumSdkConfigDynamicOptionSerializedType("dynamic") diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_strategy.py b/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_strategy.py new file mode 100644 index 0000000000..2d75857c57 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_dynamic_option_strategy.py @@ -0,0 +1,44 @@ +# 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 RumSdkConfigDynamicOptionStrategy(ModelSimple): + """ + The strategy used to extract the dynamic value. + + :param value: Must be one of ["js", "cookie", "dom", "localStorage"]. + :type value: str + """ + + allowed_values = { + "js", + "cookie", + "dom", + "localStorage", + } + JS: ClassVar["RumSdkConfigDynamicOptionStrategy"] + COOKIE: ClassVar["RumSdkConfigDynamicOptionStrategy"] + DOM: ClassVar["RumSdkConfigDynamicOptionStrategy"] + LOCAL_STORAGE: ClassVar["RumSdkConfigDynamicOptionStrategy"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumSdkConfigDynamicOptionStrategy.JS = RumSdkConfigDynamicOptionStrategy("js") +RumSdkConfigDynamicOptionStrategy.COOKIE = RumSdkConfigDynamicOptionStrategy("cookie") +RumSdkConfigDynamicOptionStrategy.DOM = RumSdkConfigDynamicOptionStrategy("dom") +RumSdkConfigDynamicOptionStrategy.LOCAL_STORAGE = RumSdkConfigDynamicOptionStrategy("localStorage") diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_match_option.py b/src/datadog_api_client/v2/model/rum_sdk_config_match_option.py new file mode 100644 index 0000000000..b6fc739c6a --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_match_option.py @@ -0,0 +1,50 @@ +# 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.rum_sdk_config_match_option_serialized_type import ( + RumSdkConfigMatchOptionSerializedType, + ) + + +class RumSdkConfigMatchOption(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_match_option_serialized_type import ( + RumSdkConfigMatchOptionSerializedType, + ) + + return { + "rc_serialized_type": (RumSdkConfigMatchOptionSerializedType,), + "value": (str,), + } + + attribute_map = { + "rc_serialized_type": "rc_serialized_type", + "value": "value", + } + + def __init__(self_, rc_serialized_type: RumSdkConfigMatchOptionSerializedType, value: str, **kwargs): + """ + A match option used for URL or origin pattern matching. + + :param rc_serialized_type: The type of match pattern, either a literal string or a regex. + :type rc_serialized_type: RumSdkConfigMatchOptionSerializedType + + :param value: The value to match against. + :type value: str + """ + super().__init__(kwargs) + + self_.rc_serialized_type = rc_serialized_type + self_.value = value diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_match_option_serialized_type.py b/src/datadog_api_client/v2/model/rum_sdk_config_match_option_serialized_type.py new file mode 100644 index 0000000000..9c54b90bee --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_match_option_serialized_type.py @@ -0,0 +1,38 @@ +# 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 RumSdkConfigMatchOptionSerializedType(ModelSimple): + """ + The type of match pattern, either a literal string or a regex. + + :param value: Must be one of ["string", "regex"]. + :type value: str + """ + + allowed_values = { + "string", + "regex", + } + STRING: ClassVar["RumSdkConfigMatchOptionSerializedType"] + REGEX: ClassVar["RumSdkConfigMatchOptionSerializedType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumSdkConfigMatchOptionSerializedType.STRING = RumSdkConfigMatchOptionSerializedType("string") +RumSdkConfigMatchOptionSerializedType.REGEX = RumSdkConfigMatchOptionSerializedType("regex") diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_meta.py b/src/datadog_api_client/v2/model/rum_sdk_config_meta.py new file mode 100644 index 0000000000..2c3825175c --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_meta.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, + datetime, +) + + +class RumSdkConfigMeta(ModelNormal): + @cached_property + def openapi_types(_): + return { + "updated_at": (datetime,), + "updated_by": (str,), + } + + attribute_map = { + "updated_at": "updated_at", + "updated_by": "updated_by", + } + + def __init__(self_, updated_at: datetime, updated_by: str, **kwargs): + """ + Metadata associated with a RUM SDK configuration. + + :param updated_at: The timestamp of the last update to this configuration. + :type updated_at: datetime + + :param updated_by: The handle of the user who last updated this configuration. + :type updated_by: str + """ + super().__init__(kwargs) + + self_.updated_at = updated_at + self_.updated_by = updated_by diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_response.py b/src/datadog_api_client/v2/model/rum_sdk_config_response.py new file mode 100644 index 0000000000..b884eb22c7 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_response.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 typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_data import RumSdkConfigData + + +class RumSdkConfigResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_data import RumSdkConfigData + + return { + "data": (RumSdkConfigData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: RumSdkConfigData, **kwargs): + """ + Response containing a RUM SDK configuration. + + :param data: The RUM SDK configuration data object. + :type data: RumSdkConfigData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_rum_attributes.py b/src/datadog_api_client/v2/model/rum_sdk_config_rum_attributes.py new file mode 100644 index 0000000000..bb6d501d24 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_rum_attributes.py @@ -0,0 +1,167 @@ +# 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, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_tracing_url_config import RumSdkConfigTracingUrlConfig + from datadog_api_client.v2.model.rum_sdk_config_match_option import RumSdkConfigMatchOption + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_pair import RumSdkConfigDynamicOptionPair + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option import RumSdkConfigDynamicOption + + +class RumSdkConfigRumAttributes(ModelNormal): + validations = { + "session_replay_sample_rate": { + "inclusive_maximum": 100, + "inclusive_minimum": 0, + }, + "session_sample_rate": { + "inclusive_maximum": 100, + "inclusive_minimum": 0, + }, + "trace_sample_rate": { + "inclusive_maximum": 100, + "inclusive_minimum": 0, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_tracing_url_config import RumSdkConfigTracingUrlConfig + from datadog_api_client.v2.model.rum_sdk_config_match_option import RumSdkConfigMatchOption + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_pair import RumSdkConfigDynamicOptionPair + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option import RumSdkConfigDynamicOption + + return { + "allowed_tracing_urls": ([RumSdkConfigTracingUrlConfig],), + "allowed_tracking_origins": ([RumSdkConfigMatchOption],), + "application_id": (str,), + "context": ([RumSdkConfigDynamicOptionPair],), + "default_privacy_level": (str,), + "enable_privacy_for_action_name": (bool,), + "env": (str,), + "service": (str,), + "session_replay_sample_rate": (int,), + "session_sample_rate": (int,), + "trace_sample_rate": (int,), + "track_session_across_subdomains": (bool,), + "user": ([RumSdkConfigDynamicOptionPair],), + "version": (RumSdkConfigDynamicOption,), + } + + attribute_map = { + "allowed_tracing_urls": "allowed_tracing_urls", + "allowed_tracking_origins": "allowed_tracking_origins", + "application_id": "application_id", + "context": "context", + "default_privacy_level": "default_privacy_level", + "enable_privacy_for_action_name": "enable_privacy_for_action_name", + "env": "env", + "service": "service", + "session_replay_sample_rate": "session_replay_sample_rate", + "session_sample_rate": "session_sample_rate", + "trace_sample_rate": "trace_sample_rate", + "track_session_across_subdomains": "track_session_across_subdomains", + "user": "user", + "version": "version", + } + + def __init__( + self_, + application_id: str, + default_privacy_level: str, + enable_privacy_for_action_name: bool, + session_replay_sample_rate: int, + session_sample_rate: int, + allowed_tracing_urls: Union[List[RumSdkConfigTracingUrlConfig], UnsetType] = unset, + allowed_tracking_origins: Union[List[RumSdkConfigMatchOption], UnsetType] = unset, + context: Union[List[RumSdkConfigDynamicOptionPair], UnsetType] = unset, + env: Union[str, UnsetType] = unset, + service: Union[str, UnsetType] = unset, + trace_sample_rate: Union[int, UnsetType] = unset, + track_session_across_subdomains: Union[bool, UnsetType] = unset, + user: Union[List[RumSdkConfigDynamicOptionPair], UnsetType] = unset, + version: Union[RumSdkConfigDynamicOption, UnsetType] = unset, + **kwargs, + ): + """ + The RUM SDK settings for a configuration. + + :param allowed_tracing_urls: A list of URL configurations for distributed tracing. + :type allowed_tracing_urls: [RumSdkConfigTracingUrlConfig], optional + + :param allowed_tracking_origins: A list of origin patterns allowed for cross-origin session tracking. + :type allowed_tracking_origins: [RumSdkConfigMatchOption], optional + + :param application_id: The ID of the RUM application this configuration belongs to. + :type application_id: str + + :param context: A list of dynamic option key-value pairs. + :type context: [RumSdkConfigDynamicOptionPair], optional + + :param default_privacy_level: The default privacy masking level applied to all RUM data. + :type default_privacy_level: str + + :param enable_privacy_for_action_name: Whether to mask user-interaction action names for privacy. + :type enable_privacy_for_action_name: bool + + :param env: The environment tag for the RUM application. + :type env: str, optional + + :param service: The service name tag for the RUM application. + :type service: str, optional + + :param session_replay_sample_rate: The percentage of collected sessions for which a replay is captured (0–100). + :type session_replay_sample_rate: int + + :param session_sample_rate: The percentage of user sessions to collect (0–100). + :type session_sample_rate: int + + :param trace_sample_rate: The percentage of requests to forward as APM traces (0–100). + :type trace_sample_rate: int, optional + + :param track_session_across_subdomains: Whether to share a session across subdomains of the same site. + :type track_session_across_subdomains: bool, optional + + :param user: A list of dynamic option key-value pairs. + :type user: [RumSdkConfigDynamicOptionPair], optional + + :param version: A dynamic configuration option that extracts a value at runtime using a specified strategy. + :type version: RumSdkConfigDynamicOption, optional + """ + if allowed_tracing_urls is not unset: + kwargs["allowed_tracing_urls"] = allowed_tracing_urls + if allowed_tracking_origins is not unset: + kwargs["allowed_tracking_origins"] = allowed_tracking_origins + if context is not unset: + kwargs["context"] = context + if env is not unset: + kwargs["env"] = env + if service is not unset: + kwargs["service"] = service + if trace_sample_rate is not unset: + kwargs["trace_sample_rate"] = trace_sample_rate + if track_session_across_subdomains is not unset: + kwargs["track_session_across_subdomains"] = track_session_across_subdomains + if user is not unset: + kwargs["user"] = user + if version is not unset: + kwargs["version"] = version + super().__init__(kwargs) + + self_.application_id = application_id + self_.default_privacy_level = default_privacy_level + self_.enable_privacy_for_action_name = enable_privacy_for_action_name + self_.session_replay_sample_rate = session_replay_sample_rate + self_.session_sample_rate = session_sample_rate diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_rum_update_attributes.py b/src/datadog_api_client/v2/model/rum_sdk_config_rum_update_attributes.py new file mode 100644 index 0000000000..46e5462c98 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_rum_update_attributes.py @@ -0,0 +1,160 @@ +# 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, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_tracing_url_config import RumSdkConfigTracingUrlConfig + from datadog_api_client.v2.model.rum_sdk_config_match_option import RumSdkConfigMatchOption + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_pair import RumSdkConfigDynamicOptionPair + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option import RumSdkConfigDynamicOption + + +class RumSdkConfigRumUpdateAttributes(ModelNormal): + validations = { + "session_replay_sample_rate": { + "inclusive_maximum": 100, + "inclusive_minimum": 0, + }, + "session_sample_rate": { + "inclusive_maximum": 100, + "inclusive_minimum": 0, + }, + "trace_sample_rate": { + "inclusive_maximum": 100, + "inclusive_minimum": 0, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_tracing_url_config import RumSdkConfigTracingUrlConfig + from datadog_api_client.v2.model.rum_sdk_config_match_option import RumSdkConfigMatchOption + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_pair import RumSdkConfigDynamicOptionPair + from datadog_api_client.v2.model.rum_sdk_config_dynamic_option import RumSdkConfigDynamicOption + + return { + "allowed_tracing_urls": ([RumSdkConfigTracingUrlConfig],), + "allowed_tracking_origins": ([RumSdkConfigMatchOption],), + "context": ([RumSdkConfigDynamicOptionPair],), + "default_privacy_level": (str,), + "enable_privacy_for_action_name": (bool,), + "env": (str,), + "service": (str,), + "session_replay_sample_rate": (int,), + "session_sample_rate": (int,), + "trace_sample_rate": (int,), + "track_session_across_subdomains": (bool,), + "user": ([RumSdkConfigDynamicOptionPair],), + "version": (RumSdkConfigDynamicOption,), + } + + attribute_map = { + "allowed_tracing_urls": "allowed_tracing_urls", + "allowed_tracking_origins": "allowed_tracking_origins", + "context": "context", + "default_privacy_level": "default_privacy_level", + "enable_privacy_for_action_name": "enable_privacy_for_action_name", + "env": "env", + "service": "service", + "session_replay_sample_rate": "session_replay_sample_rate", + "session_sample_rate": "session_sample_rate", + "trace_sample_rate": "trace_sample_rate", + "track_session_across_subdomains": "track_session_across_subdomains", + "user": "user", + "version": "version", + } + + def __init__( + self_, + default_privacy_level: str, + enable_privacy_for_action_name: bool, + session_replay_sample_rate: int, + session_sample_rate: int, + allowed_tracing_urls: Union[List[RumSdkConfigTracingUrlConfig], UnsetType] = unset, + allowed_tracking_origins: Union[List[RumSdkConfigMatchOption], UnsetType] = unset, + context: Union[List[RumSdkConfigDynamicOptionPair], UnsetType] = unset, + env: Union[str, UnsetType] = unset, + service: Union[str, UnsetType] = unset, + trace_sample_rate: Union[int, UnsetType] = unset, + track_session_across_subdomains: Union[bool, UnsetType] = unset, + user: Union[List[RumSdkConfigDynamicOptionPair], UnsetType] = unset, + version: Union[RumSdkConfigDynamicOption, UnsetType] = unset, + **kwargs, + ): + """ + The RUM SDK settings to apply when updating a configuration. + + :param allowed_tracing_urls: A list of URL configurations for distributed tracing. + :type allowed_tracing_urls: [RumSdkConfigTracingUrlConfig], optional + + :param allowed_tracking_origins: A list of origin patterns allowed for cross-origin session tracking. + :type allowed_tracking_origins: [RumSdkConfigMatchOption], optional + + :param context: A list of dynamic option key-value pairs. + :type context: [RumSdkConfigDynamicOptionPair], optional + + :param default_privacy_level: The default privacy masking level applied to all RUM data. + :type default_privacy_level: str + + :param enable_privacy_for_action_name: Whether to mask user-interaction action names for privacy. + :type enable_privacy_for_action_name: bool + + :param env: The environment tag for the RUM application. + :type env: str, optional + + :param service: The service name tag for the RUM application. + :type service: str, optional + + :param session_replay_sample_rate: The percentage of collected sessions for which a replay is captured (0–100). + :type session_replay_sample_rate: int + + :param session_sample_rate: The percentage of user sessions to collect (0–100). + :type session_sample_rate: int + + :param trace_sample_rate: The percentage of requests to forward as APM traces (0–100). + :type trace_sample_rate: int, optional + + :param track_session_across_subdomains: Whether to share a session across subdomains of the same site. + :type track_session_across_subdomains: bool, optional + + :param user: A list of dynamic option key-value pairs. + :type user: [RumSdkConfigDynamicOptionPair], optional + + :param version: A dynamic configuration option that extracts a value at runtime using a specified strategy. + :type version: RumSdkConfigDynamicOption, optional + """ + if allowed_tracing_urls is not unset: + kwargs["allowed_tracing_urls"] = allowed_tracing_urls + if allowed_tracking_origins is not unset: + kwargs["allowed_tracking_origins"] = allowed_tracking_origins + if context is not unset: + kwargs["context"] = context + if env is not unset: + kwargs["env"] = env + if service is not unset: + kwargs["service"] = service + if trace_sample_rate is not unset: + kwargs["trace_sample_rate"] = trace_sample_rate + if track_session_across_subdomains is not unset: + kwargs["track_session_across_subdomains"] = track_session_across_subdomains + if user is not unset: + kwargs["user"] = user + if version is not unset: + kwargs["version"] = version + super().__init__(kwargs) + + self_.default_privacy_level = default_privacy_level + self_.enable_privacy_for_action_name = enable_privacy_for_action_name + self_.session_replay_sample_rate = session_replay_sample_rate + self_.session_sample_rate = session_sample_rate diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_serialized_regex.py b/src/datadog_api_client/v2/model/rum_sdk_config_serialized_regex.py new file mode 100644 index 0000000000..c3452cef4f --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_serialized_regex.py @@ -0,0 +1,46 @@ +# 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.rum_sdk_config_serialized_regex_type import RumSdkConfigSerializedRegexType + + +class RumSdkConfigSerializedRegex(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_serialized_regex_type import RumSdkConfigSerializedRegexType + + return { + "rc_serialized_type": (RumSdkConfigSerializedRegexType,), + "value": (str,), + } + + attribute_map = { + "rc_serialized_type": "rc_serialized_type", + "value": "value", + } + + def __init__(self_, rc_serialized_type: RumSdkConfigSerializedRegexType, value: str, **kwargs): + """ + A serialized regex used as an extractor in dynamic options. + + :param rc_serialized_type: The type identifier for a serialized regex. Always ``regex``. + :type rc_serialized_type: RumSdkConfigSerializedRegexType + + :param value: The regex pattern used for extraction. + :type value: str + """ + super().__init__(kwargs) + + self_.rc_serialized_type = rc_serialized_type + self_.value = value diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_serialized_regex_type.py b/src/datadog_api_client/v2/model/rum_sdk_config_serialized_regex_type.py new file mode 100644 index 0000000000..c6e9220022 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_serialized_regex_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 RumSdkConfigSerializedRegexType(ModelSimple): + """ + The type identifier for a serialized regex. Always `regex`. + + :param value: If omitted defaults to "regex". Must be one of ["regex"]. + :type value: str + """ + + allowed_values = { + "regex", + } + REGEX: ClassVar["RumSdkConfigSerializedRegexType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumSdkConfigSerializedRegexType.REGEX = RumSdkConfigSerializedRegexType("regex") diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_tracing_url_config.py b/src/datadog_api_client/v2/model/rum_sdk_config_tracing_url_config.py new file mode 100644 index 0000000000..a0f29bb40b --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_tracing_url_config.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 List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_match_option import RumSdkConfigMatchOption + from datadog_api_client.v2.model.rum_sdk_config_tracing_url_propagator_type import ( + RumSdkConfigTracingUrlPropagatorType, + ) + + +class RumSdkConfigTracingUrlConfig(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_match_option import RumSdkConfigMatchOption + from datadog_api_client.v2.model.rum_sdk_config_tracing_url_propagator_type import ( + RumSdkConfigTracingUrlPropagatorType, + ) + + return { + "match": (RumSdkConfigMatchOption,), + "propagator_types": ([RumSdkConfigTracingUrlPropagatorType],), + } + + attribute_map = { + "match": "match", + "propagator_types": "propagator_types", + } + + def __init__( + self_, match: RumSdkConfigMatchOption, propagator_types: List[RumSdkConfigTracingUrlPropagatorType], **kwargs + ): + """ + Configuration for a URL that should have distributed tracing enabled. + + :param match: A match option used for URL or origin pattern matching. + :type match: RumSdkConfigMatchOption + + :param propagator_types: The list of trace propagator types to use for this URL. + :type propagator_types: [RumSdkConfigTracingUrlPropagatorType] + """ + super().__init__(kwargs) + + self_.match = match + self_.propagator_types = propagator_types diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_tracing_url_propagator_type.py b/src/datadog_api_client/v2/model/rum_sdk_config_tracing_url_propagator_type.py new file mode 100644 index 0000000000..85d7192ad1 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_tracing_url_propagator_type.py @@ -0,0 +1,44 @@ +# 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 RumSdkConfigTracingUrlPropagatorType(ModelSimple): + """ + A trace propagator type. + + :param value: Must be one of ["datadog", "b3", "b3multi", "tracecontext"]. + :type value: str + """ + + allowed_values = { + "datadog", + "b3", + "b3multi", + "tracecontext", + } + DATADOG: ClassVar["RumSdkConfigTracingUrlPropagatorType"] + B3: ClassVar["RumSdkConfigTracingUrlPropagatorType"] + B3MULTI: ClassVar["RumSdkConfigTracingUrlPropagatorType"] + TRACECONTEXT: ClassVar["RumSdkConfigTracingUrlPropagatorType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumSdkConfigTracingUrlPropagatorType.DATADOG = RumSdkConfigTracingUrlPropagatorType("datadog") +RumSdkConfigTracingUrlPropagatorType.B3 = RumSdkConfigTracingUrlPropagatorType("b3") +RumSdkConfigTracingUrlPropagatorType.B3MULTI = RumSdkConfigTracingUrlPropagatorType("b3multi") +RumSdkConfigTracingUrlPropagatorType.TRACECONTEXT = RumSdkConfigTracingUrlPropagatorType("tracecontext") diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_type.py b/src/datadog_api_client/v2/model/rum_sdk_config_type.py new file mode 100644 index 0000000000..021fa84c01 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_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 RumSdkConfigType(ModelSimple): + """ + The type of the resource. The value should always be `rum_sdk_config`. + + :param value: If omitted defaults to "rum_sdk_config". Must be one of ["rum_sdk_config"]. + :type value: str + """ + + allowed_values = { + "rum_sdk_config", + } + RUM_SDK_CONFIG: ClassVar["RumSdkConfigType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumSdkConfigType.RUM_SDK_CONFIG = RumSdkConfigType("rum_sdk_config") diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_update_attributes.py b/src/datadog_api_client/v2/model/rum_sdk_config_update_attributes.py new file mode 100644 index 0000000000..0ab4ad4a3a --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_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 typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_rum_update_attributes import RumSdkConfigRumUpdateAttributes + + +class RumSdkConfigUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_rum_update_attributes import RumSdkConfigRumUpdateAttributes + + return { + "rum": (RumSdkConfigRumUpdateAttributes,), + } + + attribute_map = { + "rum": "rum", + } + + def __init__(self_, rum: RumSdkConfigRumUpdateAttributes, **kwargs): + """ + Attributes of the RUM SDK configuration to update. + + :param rum: The RUM SDK settings to apply when updating a configuration. + :type rum: RumSdkConfigRumUpdateAttributes + """ + super().__init__(kwargs) + + self_.rum = rum diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_update_data.py b/src/datadog_api_client/v2/model/rum_sdk_config_update_data.py new file mode 100644 index 0000000000..a2186d8ac1 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_update_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.rum_sdk_config_update_attributes import RumSdkConfigUpdateAttributes + from datadog_api_client.v2.model.rum_sdk_config_type import RumSdkConfigType + + +class RumSdkConfigUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_update_attributes import RumSdkConfigUpdateAttributes + from datadog_api_client.v2.model.rum_sdk_config_type import RumSdkConfigType + + return { + "attributes": (RumSdkConfigUpdateAttributes,), + "id": (str,), + "type": (RumSdkConfigType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: RumSdkConfigUpdateAttributes, id: str, type: RumSdkConfigType, **kwargs): + """ + The data object for updating a RUM SDK configuration. + + :param attributes: Attributes of the RUM SDK configuration to update. + :type attributes: RumSdkConfigUpdateAttributes + + :param id: The ID of the RUM SDK configuration to update. + :type id: str + + :param type: The type of the resource. The value should always be ``rum_sdk_config``. + :type type: RumSdkConfigType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/rum_sdk_config_update_request.py b/src/datadog_api_client/v2/model/rum_sdk_config_update_request.py new file mode 100644 index 0000000000..929d743545 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_sdk_config_update_request.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 typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_sdk_config_update_data import RumSdkConfigUpdateData + + +class RumSdkConfigUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_sdk_config_update_data import RumSdkConfigUpdateData + + return { + "data": (RumSdkConfigUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: RumSdkConfigUpdateData, **kwargs): + """ + Request body for updating a RUM SDK configuration. + + :param data: The data object for updating a RUM SDK configuration. + :type data: RumSdkConfigUpdateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 63f7f0c551..7f93761202 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -6731,6 +6731,30 @@ from datadog_api_client.v2.model.rum_retention_filters_order_request import RumRetentionFiltersOrderRequest from datadog_api_client.v2.model.rum_retention_filters_order_response import RumRetentionFiltersOrderResponse from datadog_api_client.v2.model.rum_retention_filters_response import RumRetentionFiltersResponse +from datadog_api_client.v2.model.rum_sdk_config_attributes import RumSdkConfigAttributes +from datadog_api_client.v2.model.rum_sdk_config_data import RumSdkConfigData +from datadog_api_client.v2.model.rum_sdk_config_dynamic_option import RumSdkConfigDynamicOption +from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_pair import RumSdkConfigDynamicOptionPair +from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_serialized_type import ( + RumSdkConfigDynamicOptionSerializedType, +) +from datadog_api_client.v2.model.rum_sdk_config_dynamic_option_strategy import RumSdkConfigDynamicOptionStrategy +from datadog_api_client.v2.model.rum_sdk_config_match_option import RumSdkConfigMatchOption +from datadog_api_client.v2.model.rum_sdk_config_match_option_serialized_type import ( + RumSdkConfigMatchOptionSerializedType, +) +from datadog_api_client.v2.model.rum_sdk_config_meta import RumSdkConfigMeta +from datadog_api_client.v2.model.rum_sdk_config_response import RumSdkConfigResponse +from datadog_api_client.v2.model.rum_sdk_config_rum_attributes import RumSdkConfigRumAttributes +from datadog_api_client.v2.model.rum_sdk_config_rum_update_attributes import RumSdkConfigRumUpdateAttributes +from datadog_api_client.v2.model.rum_sdk_config_serialized_regex import RumSdkConfigSerializedRegex +from datadog_api_client.v2.model.rum_sdk_config_serialized_regex_type import RumSdkConfigSerializedRegexType +from datadog_api_client.v2.model.rum_sdk_config_tracing_url_config import RumSdkConfigTracingUrlConfig +from datadog_api_client.v2.model.rum_sdk_config_tracing_url_propagator_type import RumSdkConfigTracingUrlPropagatorType +from datadog_api_client.v2.model.rum_sdk_config_type import RumSdkConfigType +from datadog_api_client.v2.model.rum_sdk_config_update_attributes import RumSdkConfigUpdateAttributes +from datadog_api_client.v2.model.rum_sdk_config_update_data import RumSdkConfigUpdateData +from datadog_api_client.v2.model.rum_sdk_config_update_request import RumSdkConfigUpdateRequest from datadog_api_client.v2.model.run_data_observability_monitor_response import RunDataObservabilityMonitorResponse from datadog_api_client.v2.model.run_data_observability_monitor_response_data import ( RunDataObservabilityMonitorResponseData, @@ -14226,6 +14250,26 @@ "RumRetentionFiltersOrderRequest", "RumRetentionFiltersOrderResponse", "RumRetentionFiltersResponse", + "RumSdkConfigAttributes", + "RumSdkConfigData", + "RumSdkConfigDynamicOption", + "RumSdkConfigDynamicOptionPair", + "RumSdkConfigDynamicOptionSerializedType", + "RumSdkConfigDynamicOptionStrategy", + "RumSdkConfigMatchOption", + "RumSdkConfigMatchOptionSerializedType", + "RumSdkConfigMeta", + "RumSdkConfigResponse", + "RumSdkConfigRumAttributes", + "RumSdkConfigRumUpdateAttributes", + "RumSdkConfigSerializedRegex", + "RumSdkConfigSerializedRegexType", + "RumSdkConfigTracingUrlConfig", + "RumSdkConfigTracingUrlPropagatorType", + "RumSdkConfigType", + "RumSdkConfigUpdateAttributes", + "RumSdkConfigUpdateData", + "RumSdkConfigUpdateRequest", "RunDataObservabilityMonitorResponse", "RunDataObservabilityMonitorResponseData", "RunHistoricalJobRequest", diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_rum_sdk_configuration_returns_forbidden_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_rum_sdk_configuration_returns_forbidden_response.frozen new file mode 100644 index 0000000000..cbb7fdd824 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_rum_sdk_configuration_returns_forbidden_response.frozen @@ -0,0 +1 @@ +2026-06-17T12:36:53.338Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_rum_sdk_configuration_returns_forbidden_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_rum_sdk_configuration_returns_forbidden_response.yaml new file mode 100644 index 0000000000..939a850172 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_rum_sdk_configuration_returns_forbidden_response.yaml @@ -0,0 +1,20 @@ +interactions: +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/remote_config/products/rum/configs/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa + response: + body: + string: '{"errors":[{"title":"Forbidden"}]} + + ' + headers: + content-type: + - text/plain; charset=utf-8 + status: + code: 403 + message: Forbidden +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_rum_sdk_configuration_returns_forbidden_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_rum_sdk_configuration_returns_forbidden_response.frozen new file mode 100644 index 0000000000..9f95eabe3e --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_rum_sdk_configuration_returns_forbidden_response.frozen @@ -0,0 +1 @@ +2026-06-17T12:36:53.745Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_rum_sdk_configuration_returns_forbidden_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_rum_sdk_configuration_returns_forbidden_response.yaml new file mode 100644 index 0000000000..01f774cfb4 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_rum_sdk_configuration_returns_forbidden_response.yaml @@ -0,0 +1,22 @@ +interactions: +- request: + body: '{"data":{"attributes":{"rum":{"default_privacy_level":"mask","enable_privacy_for_action_name":true,"session_replay_sample_rate":20,"session_sample_rate":75}},"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","type":"rum_sdk_config"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PUT + uri: https://api.datadoghq.com/api/v2/remote_config/products/rum/configs/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa + response: + body: + string: '{"errors":[{"title":"Forbidden"}]} + + ' + headers: + content-type: + - text/plain; charset=utf-8 + status: + code: 403 + message: Forbidden +version: 1 diff --git a/tests/v2/features/rum_remote_config.feature b/tests/v2/features/rum_remote_config.feature new file mode 100644 index 0000000000..363d3f0ac3 --- /dev/null +++ b/tests/v2/features/rum_remote_config.feature @@ -0,0 +1,70 @@ +@endpoint(rum-remote-config) @endpoint(rum-remote-config-v2) +Feature: RUM Remote Config + Manage [RUM SDK + configurations](https://docs.datadoghq.com/real_user_monitoring/) + delivered to RUM applications via Remote Configuration. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "RUMRemoteConfig" API + + @team:DataDog/rum-backend + Scenario: Get a RUM SDK configuration returns "Forbidden" response + Given operation "GetRumSdkConfig" enabled + And new "GetRumSdkConfig" request + And request contains "config_id" parameter with value "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" + When the request is sent + Then the response status is 403 Forbidden + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a RUM SDK configuration returns "Not Found" response + Given operation "GetRumSdkConfig" enabled + And new "GetRumSdkConfig" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a RUM SDK configuration returns "OK" response + Given operation "GetRumSdkConfig" enabled + And new "GetRumSdkConfig" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a RUM SDK configuration returns "Bad Request" response + Given operation "UpdateRumSdkConfig" enabled + And new "UpdateRumSdkConfig" request + And request contains "config_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"rum": {"allowed_tracing_urls": [{"match": {"rc_serialized_type": "string", "value": "https://app.datadoghq.com"}, "propagator_types": ["datadog", "tracecontext"]}], "allowed_tracking_origins": [{"rc_serialized_type": "string", "value": "https://app.datadoghq.com"}], "context": [{"key": "id", "value": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}], "default_privacy_level": "mask", "enable_privacy_for_action_name": true, "env": "production", "service": "my-service", "session_replay_sample_rate": 20, "session_sample_rate": 75, "trace_sample_rate": 100, "track_session_across_subdomains": false, "user": [{"key": "id", "value": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}], "version": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}}, "id": "abc12345-1234-5678-abcd-ef1234567890", "type": "rum_sdk_config"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/rum-backend + Scenario: Update a RUM SDK configuration returns "Forbidden" response + Given operation "UpdateRumSdkConfig" enabled + And new "UpdateRumSdkConfig" request + And request contains "config_id" parameter with value "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" + And body with value {"data": {"id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "type": "rum_sdk_config", "attributes": {"rum": {"session_sample_rate": 75, "session_replay_sample_rate": 20, "default_privacy_level": "mask", "enable_privacy_for_action_name": true}}}} + When the request is sent + Then the response status is 403 Forbidden + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a RUM SDK configuration returns "Not Found" response + Given operation "UpdateRumSdkConfig" enabled + And new "UpdateRumSdkConfig" request + And request contains "config_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"rum": {"allowed_tracing_urls": [{"match": {"rc_serialized_type": "string", "value": "https://app.datadoghq.com"}, "propagator_types": ["datadog", "tracecontext"]}], "allowed_tracking_origins": [{"rc_serialized_type": "string", "value": "https://app.datadoghq.com"}], "context": [{"key": "id", "value": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}], "default_privacy_level": "mask", "enable_privacy_for_action_name": true, "env": "production", "service": "my-service", "session_replay_sample_rate": 20, "session_sample_rate": 75, "trace_sample_rate": 100, "track_session_across_subdomains": false, "user": [{"key": "id", "value": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}], "version": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}}, "id": "abc12345-1234-5678-abcd-ef1234567890", "type": "rum_sdk_config"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a RUM SDK configuration returns "OK" response + Given operation "UpdateRumSdkConfig" enabled + And new "UpdateRumSdkConfig" request + And request contains "config_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"rum": {"allowed_tracing_urls": [{"match": {"rc_serialized_type": "string", "value": "https://app.datadoghq.com"}, "propagator_types": ["datadog", "tracecontext"]}], "allowed_tracking_origins": [{"rc_serialized_type": "string", "value": "https://app.datadoghq.com"}], "context": [{"key": "id", "value": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}], "default_privacy_level": "mask", "enable_privacy_for_action_name": true, "env": "production", "service": "my-service", "session_replay_sample_rate": 20, "session_sample_rate": 75, "trace_sample_rate": 100, "track_session_across_subdomains": false, "user": [{"key": "id", "value": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}], "version": {"attribute": "data-version", "extractor": {"rc_serialized_type": "regex", "value": "^https://app-.*.datadoghq.com"}, "key": "app.version", "name": "app_version", "path": "application.version", "rc_serialized_type": "dynamic", "selector": "#app-version", "strategy": "js"}}}, "id": "abc12345-1234-5678-abcd-ef1234567890", "type": "rum_sdk_config"}} + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 896b23d3d8..89626bc569 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -6302,6 +6302,18 @@ "type": "idempotent" } }, + "GetRumSdkConfig": { + "tag": "RUM Remote Config", + "undo": { + "type": "safe" + } + }, + "UpdateRumSdkConfig": { + "tag": "RUM Remote Config", + "undo": { + "type": "idempotent" + } + }, "ListReplayHeatmapSnapshots": { "tag": "Rum Replay Heatmaps", "undo": {