diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml
index 440627d7e6b..92069d97599 100644
--- a/.generator/schemas/v2/openapi.yaml
+++ b/.generator/schemas/v2/openapi.yaml
@@ -58474,6 +58474,430 @@ components:
type: string
x-enum-varnames:
- RULESET
+ ReplayAnalysisAffectedSession:
+ description: A session affected by a replay analysis issue.
+ properties:
+ session_id:
+ description: Unique identifier of the affected session.
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ session_start_timestamp_ms:
+ description: Session start timestamp in milliseconds.
+ example: 1776415149520
+ format: int64
+ nullable: true
+ type: integer
+ required:
+ - session_id
+ type: object
+ ReplayAnalysisIssueData:
+ description: Data object representing a RUM replay analysis issue.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/ReplayAnalysisIssueDataAttributes"
+ id:
+ description: Unique identifier of the issue.
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ type:
+ $ref: "#/components/schemas/ReplayAnalysisIssueDataType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ ReplayAnalysisIssueDataAttributes:
+ description: Attributes of a RUM replay analysis issue.
+ properties:
+ affected_sessions:
+ description: Up to three sample sessions affected by this issue.
+ items:
+ $ref: "#/components/schemas/ReplayAnalysisAffectedSession"
+ type: array
+ application_id:
+ description: Unique identifier of the application where the issue was detected.
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ created_at:
+ description: Timestamp when the issue was first detected.
+ example: "2025-01-01T00:00:00Z"
+ format: date-time
+ type: string
+ description:
+ description: Human-readable description of the issue.
+ example: User is unable to complete checkout.
+ type: string
+ journey_query:
+ additionalProperties: {}
+ description: Journey query associated with the issue.
+ nullable: true
+ type: object
+ name:
+ description: Name of the issue.
+ example: Checkout failure
+ type: string
+ representative_session:
+ $ref: "#/components/schemas/ReplayAnalysisRepresentativeSession"
+ session_count:
+ description: Total number of sessions affected by this issue.
+ example: 42
+ format: int64
+ type: integer
+ severity:
+ description: Severity level of the issue. Valid values are `high`, `medium`, and `low`.
+ example: high
+ type: string
+ updated_at:
+ description: Timestamp when the issue was last updated.
+ example: "2025-01-01T00:00:00Z"
+ format: date-time
+ type: string
+ validation_verdict:
+ description: Validation status of the issue.
+ example: confirmed
+ type: string
+ required:
+ - application_id
+ - name
+ - description
+ - severity
+ - validation_verdict
+ - created_at
+ - updated_at
+ - session_count
+ - affected_sessions
+ - representative_session
+ type: object
+ ReplayAnalysisIssueDataType:
+ default: issues
+ description: RUM replay analysis issue resource type.
+ enum:
+ - issues
+ example: issues
+ type: string
+ x-enum-varnames:
+ - ISSUES
+ ReplayAnalysisIssueMeta:
+ description: Metadata object for paginated issue list responses.
+ properties:
+ page:
+ $ref: "#/components/schemas/ReplayAnalysisPageMeta"
+ required:
+ - page
+ type: object
+ ReplayAnalysisIssueResponse:
+ description: A single RUM replay analysis issue.
+ properties:
+ data:
+ $ref: "#/components/schemas/ReplayAnalysisIssueData"
+ required:
+ - data
+ type: object
+ ReplayAnalysisIssueSessionData:
+ description: Data object representing a session related to a RUM replay analysis issue.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/ReplayAnalysisIssueSessionDataAttributes"
+ id:
+ description: Unique identifier of the session.
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ type:
+ $ref: "#/components/schemas/ReplayAnalysisIssueSessionDataType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ ReplayAnalysisIssueSessionDataAttributes:
+ description: Attributes of a session related to a RUM replay analysis issue.
+ properties:
+ session_start_timestamp_ms:
+ description: Session start timestamp in milliseconds.
+ example: 1776415149520
+ format: int64
+ type: integer
+ signals:
+ description: List of signals observed in this session.
+ items:
+ $ref: "#/components/schemas/ReplayAnalysisSignal"
+ type: array
+ view_name:
+ description: Name of the view where the issue was observed.
+ example: checkout
+ type: string
+ required:
+ - session_start_timestamp_ms
+ - view_name
+ - signals
+ type: object
+ ReplayAnalysisIssueSessionDataType:
+ default: sessions
+ description: RUM replay analysis issue session resource type.
+ enum:
+ - sessions
+ example: sessions
+ type: string
+ x-enum-varnames:
+ - SESSIONS
+ ReplayAnalysisIssueSessionsResponse:
+ description: A paginated list of sessions related to a RUM replay analysis issue.
+ properties:
+ data:
+ description: Array of session data objects related to the issue.
+ items:
+ $ref: "#/components/schemas/ReplayAnalysisIssueSessionData"
+ type: array
+ meta:
+ $ref: "#/components/schemas/ReplayAnalysisIssueMeta"
+ required:
+ - data
+ - meta
+ type: object
+ ReplayAnalysisIssuesResponse:
+ description: A paginated list of RUM replay analysis issues.
+ properties:
+ data:
+ description: Array of RUM replay analysis issue data objects.
+ items:
+ $ref: "#/components/schemas/ReplayAnalysisIssueData"
+ type: array
+ meta:
+ $ref: "#/components/schemas/ReplayAnalysisIssueMeta"
+ required:
+ - data
+ - meta
+ type: object
+ ReplayAnalysisLLMDetails:
+ description: AI-generated analysis details for a replay issue.
+ properties:
+ intent:
+ description: Interpreted user intent derived from session analysis.
+ example: Add item to cart.
+ type: string
+ user_pattern:
+ description: List of user behavior steps observed in the session.
+ example:
+ - Navigated to checkout
+ - Clicked buy button
+ items:
+ type: string
+ type: array
+ required:
+ - intent
+ - user_pattern
+ type: object
+ ReplayAnalysisPageMeta:
+ description: Pagination metadata for a RUM replay analysis response.
+ properties:
+ total_filtered_count:
+ description: Total number of items matching the current filters.
+ example: 100
+ format: int64
+ type: integer
+ required:
+ - total_filtered_count
+ type: object
+ ReplayAnalysisRepresentativeSession:
+ description: A representative session illustrating a replay analysis issue.
+ properties:
+ issue_category:
+ description: Category of the issue observed in this session.
+ example: usability
+ type: string
+ llm_analysis_details:
+ $ref: "#/components/schemas/ReplayAnalysisLLMDetails"
+ screenshot:
+ $ref: "#/components/schemas/ReplayAnalysisScreenshot"
+ session_id:
+ description: Unique identifier of the representative session.
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ session_start_timestamp_ms:
+ description: Session start timestamp in milliseconds.
+ example: 1776415149520
+ format: int64
+ type: integer
+ signals:
+ description: List of signals observed in the representative session.
+ items:
+ $ref: "#/components/schemas/ReplayAnalysisSignal"
+ type: array
+ view_name:
+ description: Name of the view where the issue was observed.
+ example: checkout
+ nullable: true
+ type: string
+ required:
+ - session_id
+ - issue_category
+ - session_start_timestamp_ms
+ - llm_analysis_details
+ - signals
+ type: object
+ ReplayAnalysisScreenshot:
+ description: A screenshot captured during a replay session.
+ properties:
+ screenshot_key:
+ description: Filename or key identifier of the screenshot.
+ example: ts.webp
+ type: string
+ session_id:
+ description: Unique identifier of the session where the screenshot was taken.
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ timestamp_ms:
+ description: Timestamp of the screenshot in milliseconds.
+ example: 1700000000000
+ format: int64
+ type: integer
+ view_id:
+ description: Unique identifier of the view where the screenshot was taken.
+ example: 00000000-0000-0000-0000-000000000002
+ type: string
+ required:
+ - session_id
+ - view_id
+ - screenshot_key
+ - timestamp_ms
+ type: object
+ ReplayAnalysisSignal:
+ description: A signal associated with a replay issue, capturing user interaction details.
+ properties:
+ event:
+ description: Event name associated with the signal.
+ example: button
+ type: string
+ signal_type:
+ description: Type of signal captured.
+ example: click
+ type: string
+ timestamp_ms:
+ description: Absolute timestamp of the signal in milliseconds.
+ example: 1776415149620
+ format: int64
+ type: integer
+ user_pattern:
+ description: User behavior pattern identified for the signal.
+ example: rage click
+ type: string
+ required:
+ - signal_type
+ - event
+ - user_pattern
+ - timestamp_ms
+ type: object
+ ReplaySummaryChapter:
+ description: A chapter within a RUM replay summary, representing a distinct segment of user activity.
+ properties:
+ end_ms:
+ description: End time of the chapter in milliseconds.
+ example: 60000
+ format: int64
+ type: integer
+ start_ms:
+ description: Start time of the chapter in milliseconds.
+ example: 0
+ format: int64
+ type: integer
+ text:
+ description: Description of user activity during this chapter.
+ example: Browsing
+ type: string
+ required:
+ - text
+ - start_ms
+ - end_ms
+ type: object
+ ReplaySummaryDataAttributesResponse:
+ description: Attributes of a RUM replay summary response.
+ properties:
+ chapters:
+ description: List of chapters breaking down the session into distinct activity segments.
+ items:
+ $ref: "#/components/schemas/ReplaySummaryChapter"
+ type: array
+ has_enough_activity:
+ description: Whether the session contained sufficient user activity to generate a summary.
+ example: true
+ type: boolean
+ has_too_many_events:
+ description: Whether the session exceeded the event count limit for summary generation.
+ example: false
+ type: boolean
+ summary:
+ description: AI-generated summary of the replay session.
+ example: User browsed the home page and attempted to add an item to the cart.
+ type: string
+ version:
+ description: Version of the prompt used to generate the summary.
+ example: 3-65f24320d95eb8d3
+ type: string
+ required:
+ - summary
+ - chapters
+ - version
+ - has_enough_activity
+ - has_too_many_events
+ type: object
+ ReplaySummaryDataRequest:
+ description: Data object for a RUM replay summary request.
+ properties:
+ type:
+ $ref: "#/components/schemas/ReplaySummaryRequestType"
+ required:
+ - type
+ type: object
+ ReplaySummaryDataResponse:
+ description: Data object for a RUM replay summary response.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/ReplaySummaryDataAttributesResponse"
+ id:
+ description: Unique identifier of the generated summary.
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ type:
+ $ref: "#/components/schemas/ReplaySummaryResponseType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ ReplaySummaryRequest:
+ description: Request body for generating a RUM replay summary.
+ properties:
+ data:
+ $ref: "#/components/schemas/ReplaySummaryDataRequest"
+ required:
+ - data
+ type: object
+ ReplaySummaryRequestType:
+ default: replay_summary_request
+ description: RUM replay summary request resource type.
+ enum:
+ - replay_summary_request
+ example: replay_summary_request
+ type: string
+ x-enum-varnames:
+ - REPLAY_SUMMARY_REQUEST
+ ReplaySummaryResponse:
+ description: Response containing a generated RUM replay summary.
+ properties:
+ data:
+ $ref: "#/components/schemas/ReplaySummaryDataResponse"
+ required:
+ - data
+ type: object
+ ReplaySummaryResponseType:
+ default: summary_response
+ description: RUM replay summary response resource type.
+ enum:
+ - summary_response
+ example: summary_response
+ type: string
+ x-enum-varnames:
+ - SUMMARY_RESPONSE
ResolveVulnerableSymbolsRequest:
description: The top-level request object for resolving vulnerable symbols in a set of packages.
properties:
@@ -123475,6 +123899,278 @@ paths:
summary: Update a Workload Protection policy
tags: ["CSM Threats"]
x-codegen-request-body-name: body
+ /api/v2/replay/analysis/issues:
+ get:
+ description: Retrieve a paginated list of RUM replay analysis issues, optionally filtered by application, severity, view name, or issue category.
+ operationId: ListReplayAnalysisIssues
+ parameters:
+ - description: Filter issues by application UUID.
+ in: query
+ name: filter[application_id]
+ schema:
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ - description: Filter issues by comma-separated severity values. Valid values are `high`, `medium`, and `low`.
+ in: query
+ name: filter[severity]
+ schema:
+ example: high,medium
+ type: string
+ - description: Filter issues by comma-separated view names.
+ in: query
+ name: filter[view_name]
+ schema:
+ example: checkout,cart
+ type: string
+ - description: Filter issues by comma-separated issue categories.
+ in: query
+ name: filter[issue_category]
+ schema:
+ example: user_confusion,system_failure
+ type: string
+ - description: Sort order for the results. Valid values are `created_at`, `-created_at`, `severity`, `-severity`, `session_count`, and `-session_count`. Defaults to `-created_at`.
+ in: query
+ name: sort
+ schema:
+ default: -created_at
+ example: -created_at
+ type: string
+ - description: Page number for pagination (0-indexed).
+ in: query
+ name: page[number]
+ schema:
+ default: 0
+ example: 0
+ minimum: 0
+ type: integer
+ - description: Number of items per page. Must be between 1 and 100.
+ in: query
+ name: page[size]
+ schema:
+ default: 15
+ example: 15
+ maximum: 100
+ minimum: 1
+ type: integer
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ affected_sessions:
+ - session_id: 00000000-0000-0000-0000-000000000002
+ session_start_timestamp_ms: 1776415149520
+ application_id: 00000000-0000-0000-0000-000000000001
+ created_at: "2025-01-01T00:00:00Z"
+ description: User is unable to complete checkout.
+ name: Checkout failure
+ representative_session:
+ issue_category: usability
+ llm_analysis_details:
+ intent: Add item to cart.
+ user_pattern:
+ - Navigated to checkout
+ - Clicked buy button
+ session_id: 00000000-0000-0000-0000-000000000002
+ session_start_timestamp_ms: 1776415149520
+ signals:
+ - event: button
+ signal_type: click
+ timestamp_ms: 1776415149620
+ user_pattern: rage click
+ session_count: 42
+ severity: high
+ updated_at: "2025-01-01T00:00:00Z"
+ validation_verdict: confirmed
+ id: 00000000-0000-0000-0000-000000000001
+ type: issues
+ meta:
+ page:
+ total_filtered_count: 100
+ schema:
+ $ref: "#/components/schemas/ReplayAnalysisIssuesResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Bad Request
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ: []
+ summary: List replay analysis issues
+ tags:
+ - Rum Replay Analysis
+ 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/analysis/issues/{issue_id}:
+ get:
+ description: Retrieve details of a specific RUM replay analysis issue by its identifier.
+ operationId: GetReplayAnalysisIssue
+ parameters:
+ - description: Unique identifier of the issue.
+ in: path
+ name: issue_id
+ required: true
+ schema:
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ affected_sessions:
+ - session_id: 00000000-0000-0000-0000-000000000002
+ session_start_timestamp_ms: 1776415149520
+ application_id: 00000000-0000-0000-0000-000000000001
+ created_at: "2025-01-01T00:00:00Z"
+ description: User is unable to complete checkout.
+ name: Checkout failure
+ representative_session:
+ issue_category: usability
+ llm_analysis_details:
+ intent: Add item to cart.
+ user_pattern:
+ - Navigated to checkout
+ - Clicked buy button
+ session_id: 00000000-0000-0000-0000-000000000002
+ session_start_timestamp_ms: 1776415149520
+ signals:
+ - event: button
+ signal_type: click
+ timestamp_ms: 1776415149620
+ user_pattern: rage click
+ session_count: 42
+ severity: high
+ updated_at: "2025-01-01T00:00:00Z"
+ validation_verdict: confirmed
+ id: 00000000-0000-0000-0000-000000000001
+ type: issues
+ schema:
+ $ref: "#/components/schemas/ReplayAnalysisIssueResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Bad Request
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ: []
+ summary: Get replay analysis issue
+ tags:
+ - Rum Replay Analysis
+ 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/analysis/issues/{issue_id}/sessions:
+ get:
+ description: Retrieve a paginated list of sessions related to a specific RUM replay analysis issue.
+ operationId: ListReplayAnalysisIssueSessions
+ parameters:
+ - description: Unique identifier of the issue.
+ in: path
+ name: issue_id
+ required: true
+ schema:
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ - description: Sort order for the results. Valid values are `last_seen_at`, `-last_seen_at`, `proximity`, and `-proximity`. Defaults to `-last_seen_at`.
+ in: query
+ name: sort
+ schema:
+ default: -last_seen_at
+ example: -last_seen_at
+ type: string
+ - description: Page number for pagination (0-indexed).
+ in: query
+ name: page[number]
+ schema:
+ default: 0
+ example: 0
+ minimum: 0
+ type: integer
+ - description: Number of items per page. Must be between 1 and 100.
+ in: query
+ name: page[size]
+ schema:
+ default: 15
+ example: 15
+ maximum: 100
+ minimum: 1
+ type: integer
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ session_start_timestamp_ms: 1776415149520
+ signals:
+ - event: button
+ signal_type: click
+ timestamp_ms: 1776415149620
+ user_pattern: rage click
+ view_name: checkout
+ id: 00000000-0000-0000-0000-000000000001
+ type: sessions
+ meta:
+ page:
+ total_filtered_count: 100
+ schema:
+ $ref: "#/components/schemas/ReplayAnalysisIssueSessionsResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Bad Request
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ: []
+ summary: List replay analysis issue sessions
+ tags:
+ - Rum Replay Analysis
+ 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.
@@ -123659,6 +124355,95 @@ paths:
summary: Update replay heatmap snapshot
tags:
- Rum Replay Heatmaps
+ /api/v2/replay/summary/{session_id}:
+ post:
+ description: Generate an AI-powered summary for a RUM replay session, including chapter breakdowns and behavioral analysis.
+ operationId: GenerateReplaySummary
+ parameters:
+ - description: Unique identifier of the session.
+ in: path
+ name: session_id
+ required: true
+ schema:
+ example: 00000000-0000-0000-0000-000000000001
+ type: string
+ - description: Data source for the session. Valid values are `rum`, `product_analytics`, and `replay`.
+ in: query
+ name: data_source
+ required: true
+ schema:
+ example: rum
+ type: string
+ - description: Server-side timestamp in milliseconds.
+ in: query
+ name: ts
+ schema:
+ example: 1704067200000
+ format: int64
+ type: integer
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ type: replay_summary_request
+ schema:
+ $ref: "#/components/schemas/ReplaySummaryRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ chapters:
+ - end_ms: 60000
+ start_ms: 0
+ text: Browsing
+ has_enough_activity: true
+ has_too_many_events: false
+ summary: User browsed the home page and attempted to add an item to the cart.
+ version: 3-65f24320d95eb8d3
+ id: 00000000-0000-0000-0000-000000000001
+ type: summary_response
+ schema:
+ $ref: "#/components/schemas/ReplaySummaryResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ: []
+ summary: Generate replay summary
+ tags:
+ - Rum Replay
+ 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/restriction_policy/{resource_id}:
delete:
description: Deletes the restriction policy associated with a specified resource.
@@ -145912,6 +146697,10 @@ tags:
description: Find out more at
url: https://docs.datadoghq.com/real_user_monitoring/platform/generate_metrics/
name: Rum Metrics
+ - description: Generate and retrieve AI-powered summaries of RUM replay sessions.
+ name: Rum Replay
+ - description: Analyze RUM replay sessions to identify and investigate user-facing issues. Retrieve issues detected by AI analysis, get details for individual issues, and explore the sessions associated with each issue.
+ name: Rum Replay Analysis
- description: Manage heatmap snapshots for RUM replay sessions. Create, update, delete, and retrieve snapshots to visualize user interactions on specific views.
name: Rum Replay Heatmaps
- description: Create and manage playlists of RUM replay sessions. Organize, categorize, and share collections of replay sessions for analysis and collaboration.
diff --git a/examples/v2/rum-replay-analysis/GetReplayAnalysisIssue.java b/examples/v2/rum-replay-analysis/GetReplayAnalysisIssue.java
new file mode 100644
index 00000000000..9cfffa31aa4
--- /dev/null
+++ b/examples/v2/rum-replay-analysis/GetReplayAnalysisIssue.java
@@ -0,0 +1,26 @@
+// Get replay analysis issue returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.RumReplayAnalysisApi;
+import com.datadog.api.client.v2.model.ReplayAnalysisIssueResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.getReplayAnalysisIssue", true);
+ RumReplayAnalysisApi apiInstance = new RumReplayAnalysisApi(defaultClient);
+
+ try {
+ ReplayAnalysisIssueResponse result =
+ apiInstance.getReplayAnalysisIssue("00000000-0000-0000-0000-000000000001");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling RumReplayAnalysisApi#getReplayAnalysisIssue");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/rum-replay-analysis/ListReplayAnalysisIssueSessions.java b/examples/v2/rum-replay-analysis/ListReplayAnalysisIssueSessions.java
new file mode 100644
index 00000000000..6784674fcc8
--- /dev/null
+++ b/examples/v2/rum-replay-analysis/ListReplayAnalysisIssueSessions.java
@@ -0,0 +1,27 @@
+// List replay analysis issue sessions returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.RumReplayAnalysisApi;
+import com.datadog.api.client.v2.model.ReplayAnalysisIssueSessionsResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listReplayAnalysisIssueSessions", true);
+ RumReplayAnalysisApi apiInstance = new RumReplayAnalysisApi(defaultClient);
+
+ try {
+ ReplayAnalysisIssueSessionsResponse result =
+ apiInstance.listReplayAnalysisIssueSessions("00000000-0000-0000-0000-000000000001");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling RumReplayAnalysisApi#listReplayAnalysisIssueSessions");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/rum-replay-analysis/ListReplayAnalysisIssues.java b/examples/v2/rum-replay-analysis/ListReplayAnalysisIssues.java
new file mode 100644
index 00000000000..53016d4757c
--- /dev/null
+++ b/examples/v2/rum-replay-analysis/ListReplayAnalysisIssues.java
@@ -0,0 +1,25 @@
+// List replay analysis issues returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.RumReplayAnalysisApi;
+import com.datadog.api.client.v2.model.ReplayAnalysisIssuesResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listReplayAnalysisIssues", true);
+ RumReplayAnalysisApi apiInstance = new RumReplayAnalysisApi(defaultClient);
+
+ try {
+ ReplayAnalysisIssuesResponse result = apiInstance.listReplayAnalysisIssues();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling RumReplayAnalysisApi#listReplayAnalysisIssues");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/rum-replay/GenerateReplaySummary.java b/examples/v2/rum-replay/GenerateReplaySummary.java
new file mode 100644
index 00000000000..1549e7bc03b
--- /dev/null
+++ b/examples/v2/rum-replay/GenerateReplaySummary.java
@@ -0,0 +1,35 @@
+// Generate replay summary returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.RumReplayApi;
+import com.datadog.api.client.v2.model.ReplaySummaryDataRequest;
+import com.datadog.api.client.v2.model.ReplaySummaryRequest;
+import com.datadog.api.client.v2.model.ReplaySummaryRequestType;
+import com.datadog.api.client.v2.model.ReplaySummaryResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.generateReplaySummary", true);
+ RumReplayApi apiInstance = new RumReplayApi(defaultClient);
+
+ ReplaySummaryRequest body =
+ new ReplaySummaryRequest()
+ .data(
+ new ReplaySummaryDataRequest()
+ .type(ReplaySummaryRequestType.REPLAY_SUMMARY_REQUEST));
+
+ try {
+ ReplaySummaryResponse result =
+ apiInstance.generateReplaySummary("00000000-0000-0000-0000-000000000001", "rum", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling RumReplayApi#generateReplaySummary");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/ApiClient.java b/src/main/java/com/datadog/api/client/ApiClient.java
index e50cdd037c4..14384650e35 100644
--- a/src/main/java/com/datadog/api/client/ApiClient.java
+++ b/src/main/java/com/datadog/api/client/ApiClient.java
@@ -1000,6 +1000,10 @@ public class ApiClient {
put("v2.queryEventFilteredUsers", false);
put("v2.queryUsers", false);
put("v2.updateConnection", false);
+ put("v2.getReplayAnalysisIssue", false);
+ put("v2.listReplayAnalysisIssues", false);
+ put("v2.listReplayAnalysisIssueSessions", false);
+ put("v2.generateReplaySummary", false);
put("v2.createScorecardOutcomesBatch", false);
put("v2.listEntityRiskScores", false);
put("v2.createIncidentService", false);
diff --git a/src/main/java/com/datadog/api/client/v2/api/RumReplayAnalysisApi.java b/src/main/java/com/datadog/api/client/v2/api/RumReplayAnalysisApi.java
new file mode 100644
index 00000000000..538e0828c79
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/api/RumReplayAnalysisApi.java
@@ -0,0 +1,764 @@
+package com.datadog.api.client.v2.api;
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.ApiResponse;
+import com.datadog.api.client.Pair;
+import com.datadog.api.client.v2.model.ReplayAnalysisIssueResponse;
+import com.datadog.api.client.v2.model.ReplayAnalysisIssueSessionsResponse;
+import com.datadog.api.client.v2.model.ReplayAnalysisIssuesResponse;
+import jakarta.ws.rs.client.Invocation;
+import jakarta.ws.rs.core.GenericType;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class RumReplayAnalysisApi {
+ private ApiClient apiClient;
+
+ public RumReplayAnalysisApi() {
+ this(ApiClient.getDefaultApiClient());
+ }
+
+ public RumReplayAnalysisApi(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Get the API client.
+ *
+ * @return API client
+ */
+ public ApiClient getApiClient() {
+ return apiClient;
+ }
+
+ /**
+ * Set the API client.
+ *
+ * @param apiClient an instance of API client
+ */
+ public void setApiClient(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Get replay analysis issue.
+ *
+ *
See {@link #getReplayAnalysisIssueWithHttpInfo}.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @return ReplayAnalysisIssueResponse
+ * @throws ApiException if fails to make API call
+ */
+ public ReplayAnalysisIssueResponse getReplayAnalysisIssue(String issueId) throws ApiException {
+ return getReplayAnalysisIssueWithHttpInfo(issueId).getData();
+ }
+
+ /**
+ * Get replay analysis issue.
+ *
+ *
See {@link #getReplayAnalysisIssueWithHttpInfoAsync}.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @return CompletableFuture<ReplayAnalysisIssueResponse>
+ */
+ public CompletableFuture getReplayAnalysisIssueAsync(
+ String issueId) {
+ return getReplayAnalysisIssueWithHttpInfoAsync(issueId)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Retrieve details of a specific RUM replay analysis issue by its identifier.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @return ApiResponse<ReplayAnalysisIssueResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | Bad Request | - |
+ * | 404 | Not Found | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse getReplayAnalysisIssueWithHttpInfo(String issueId)
+ throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "getReplayAnalysisIssue";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'issueId' is set
+ if (issueId == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'issueId' when calling getReplayAnalysisIssue");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/replay/analysis/issues/{issue_id}"
+ .replaceAll("\\{" + "issue_id" + "\\}", apiClient.escapeString(issueId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.RumReplayAnalysisApi.getReplayAnalysisIssue",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Get replay analysis issue.
+ *
+ * See {@link #getReplayAnalysisIssueWithHttpInfo}.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @return CompletableFuture<ApiResponse<ReplayAnalysisIssueResponse>>
+ */
+ public CompletableFuture>
+ getReplayAnalysisIssueWithHttpInfoAsync(String issueId) {
+ // Check if unstable operation is enabled
+ String operationId = "getReplayAnalysisIssue";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'issueId' is set
+ if (issueId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400, "Missing the required parameter 'issueId' when calling getReplayAnalysisIssue"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/replay/analysis/issues/{issue_id}"
+ .replaceAll("\\{" + "issue_id" + "\\}", apiClient.escapeString(issueId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.RumReplayAnalysisApi.getReplayAnalysisIssue",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /** Manage optional parameters to listReplayAnalysisIssues. */
+ public static class ListReplayAnalysisIssuesOptionalParameters {
+ private String filterApplicationId;
+ private String filterSeverity;
+ private String filterViewName;
+ private String filterIssueCategory;
+ private String sort;
+ private Integer pageNumber;
+ private Integer pageSize;
+
+ /**
+ * Set filterApplicationId.
+ *
+ * @param filterApplicationId Filter issues by application UUID. (optional)
+ * @return ListReplayAnalysisIssuesOptionalParameters
+ */
+ public ListReplayAnalysisIssuesOptionalParameters filterApplicationId(
+ String filterApplicationId) {
+ this.filterApplicationId = filterApplicationId;
+ return this;
+ }
+
+ /**
+ * Set filterSeverity.
+ *
+ * @param filterSeverity Filter issues by comma-separated severity values. Valid values are
+ * high, medium, and low. (optional)
+ * @return ListReplayAnalysisIssuesOptionalParameters
+ */
+ public ListReplayAnalysisIssuesOptionalParameters filterSeverity(String filterSeverity) {
+ this.filterSeverity = filterSeverity;
+ return this;
+ }
+
+ /**
+ * Set filterViewName.
+ *
+ * @param filterViewName Filter issues by comma-separated view names. (optional)
+ * @return ListReplayAnalysisIssuesOptionalParameters
+ */
+ public ListReplayAnalysisIssuesOptionalParameters filterViewName(String filterViewName) {
+ this.filterViewName = filterViewName;
+ return this;
+ }
+
+ /**
+ * Set filterIssueCategory.
+ *
+ * @param filterIssueCategory Filter issues by comma-separated issue categories. (optional)
+ * @return ListReplayAnalysisIssuesOptionalParameters
+ */
+ public ListReplayAnalysisIssuesOptionalParameters filterIssueCategory(
+ String filterIssueCategory) {
+ this.filterIssueCategory = filterIssueCategory;
+ return this;
+ }
+
+ /**
+ * Set sort.
+ *
+ * @param sort Sort order for the results. Valid values are created_at,
+ * -created_at, severity, -severity, session_count
+ * , and -session_count. Defaults to -created_at.
+ * (optional, default to "-created_at")
+ * @return ListReplayAnalysisIssuesOptionalParameters
+ */
+ public ListReplayAnalysisIssuesOptionalParameters sort(String sort) {
+ this.sort = sort;
+ return this;
+ }
+
+ /**
+ * Set pageNumber.
+ *
+ * @param pageNumber Page number for pagination (0-indexed). (optional, default to 0)
+ * @return ListReplayAnalysisIssuesOptionalParameters
+ */
+ public ListReplayAnalysisIssuesOptionalParameters pageNumber(Integer pageNumber) {
+ this.pageNumber = pageNumber;
+ return this;
+ }
+
+ /**
+ * Set pageSize.
+ *
+ * @param pageSize Number of items per page. Must be between 1 and 100. (optional, default to
+ * 15)
+ * @return ListReplayAnalysisIssuesOptionalParameters
+ */
+ public ListReplayAnalysisIssuesOptionalParameters pageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+ }
+
+ /**
+ * List replay analysis issues.
+ *
+ * See {@link #listReplayAnalysisIssuesWithHttpInfo}.
+ *
+ * @return ReplayAnalysisIssuesResponse
+ * @throws ApiException if fails to make API call
+ */
+ public ReplayAnalysisIssuesResponse listReplayAnalysisIssues() throws ApiException {
+ return listReplayAnalysisIssuesWithHttpInfo(new ListReplayAnalysisIssuesOptionalParameters())
+ .getData();
+ }
+
+ /**
+ * List replay analysis issues.
+ *
+ *
See {@link #listReplayAnalysisIssuesWithHttpInfoAsync}.
+ *
+ * @return CompletableFuture<ReplayAnalysisIssuesResponse>
+ */
+ public CompletableFuture listReplayAnalysisIssuesAsync() {
+ return listReplayAnalysisIssuesWithHttpInfoAsync(
+ new ListReplayAnalysisIssuesOptionalParameters())
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * List replay analysis issues.
+ *
+ * See {@link #listReplayAnalysisIssuesWithHttpInfo}.
+ *
+ * @param parameters Optional parameters for the request.
+ * @return ReplayAnalysisIssuesResponse
+ * @throws ApiException if fails to make API call
+ */
+ public ReplayAnalysisIssuesResponse listReplayAnalysisIssues(
+ ListReplayAnalysisIssuesOptionalParameters parameters) throws ApiException {
+ return listReplayAnalysisIssuesWithHttpInfo(parameters).getData();
+ }
+
+ /**
+ * List replay analysis issues.
+ *
+ *
See {@link #listReplayAnalysisIssuesWithHttpInfoAsync}.
+ *
+ * @param parameters Optional parameters for the request.
+ * @return CompletableFuture<ReplayAnalysisIssuesResponse>
+ */
+ public CompletableFuture listReplayAnalysisIssuesAsync(
+ ListReplayAnalysisIssuesOptionalParameters parameters) {
+ return listReplayAnalysisIssuesWithHttpInfoAsync(parameters)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Retrieve a paginated list of RUM replay analysis issues, optionally filtered by application,
+ * severity, view name, or issue category.
+ *
+ * @param parameters Optional parameters for the request.
+ * @return ApiResponse<ReplayAnalysisIssuesResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | Bad Request | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse listReplayAnalysisIssuesWithHttpInfo(
+ ListReplayAnalysisIssuesOptionalParameters parameters) throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "listReplayAnalysisIssues";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = null;
+ String filterApplicationId = parameters.filterApplicationId;
+ String filterSeverity = parameters.filterSeverity;
+ String filterViewName = parameters.filterViewName;
+ String filterIssueCategory = parameters.filterIssueCategory;
+ String sort = parameters.sort;
+ Integer pageNumber = parameters.pageNumber;
+ Integer pageSize = parameters.pageSize;
+ // create path and map variables
+ String localVarPath = "/api/v2/replay/analysis/issues";
+
+ List localVarQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+
+ localVarQueryParams.addAll(
+ apiClient.parameterToPairs("", "filter[application_id]", filterApplicationId));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "filter[severity]", filterSeverity));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "filter[view_name]", filterViewName));
+ localVarQueryParams.addAll(
+ apiClient.parameterToPairs("", "filter[issue_category]", filterIssueCategory));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "sort", sort));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[number]", pageNumber));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[size]", pageSize));
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.RumReplayAnalysisApi.listReplayAnalysisIssues",
+ localVarPath,
+ localVarQueryParams,
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * List replay analysis issues.
+ *
+ * See {@link #listReplayAnalysisIssuesWithHttpInfo}.
+ *
+ * @param parameters Optional parameters for the request.
+ * @return CompletableFuture<ApiResponse<ReplayAnalysisIssuesResponse>>
+ */
+ public CompletableFuture>
+ listReplayAnalysisIssuesWithHttpInfoAsync(
+ ListReplayAnalysisIssuesOptionalParameters parameters) {
+ // Check if unstable operation is enabled
+ String operationId = "listReplayAnalysisIssues";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = null;
+ String filterApplicationId = parameters.filterApplicationId;
+ String filterSeverity = parameters.filterSeverity;
+ String filterViewName = parameters.filterViewName;
+ String filterIssueCategory = parameters.filterIssueCategory;
+ String sort = parameters.sort;
+ Integer pageNumber = parameters.pageNumber;
+ Integer pageSize = parameters.pageSize;
+ // create path and map variables
+ String localVarPath = "/api/v2/replay/analysis/issues";
+
+ List localVarQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+
+ localVarQueryParams.addAll(
+ apiClient.parameterToPairs("", "filter[application_id]", filterApplicationId));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "filter[severity]", filterSeverity));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "filter[view_name]", filterViewName));
+ localVarQueryParams.addAll(
+ apiClient.parameterToPairs("", "filter[issue_category]", filterIssueCategory));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "sort", sort));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[number]", pageNumber));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[size]", pageSize));
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.RumReplayAnalysisApi.listReplayAnalysisIssues",
+ localVarPath,
+ localVarQueryParams,
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /** Manage optional parameters to listReplayAnalysisIssueSessions. */
+ public static class ListReplayAnalysisIssueSessionsOptionalParameters {
+ private String sort;
+ private Integer pageNumber;
+ private Integer pageSize;
+
+ /**
+ * Set sort.
+ *
+ * @param sort Sort order for the results. Valid values are last_seen_at,
+ * -last_seen_at, proximity, and -proximity. Defaults to
+ * -last_seen_at. (optional, default to "-last_seen_at")
+ * @return ListReplayAnalysisIssueSessionsOptionalParameters
+ */
+ public ListReplayAnalysisIssueSessionsOptionalParameters sort(String sort) {
+ this.sort = sort;
+ return this;
+ }
+
+ /**
+ * Set pageNumber.
+ *
+ * @param pageNumber Page number for pagination (0-indexed). (optional, default to 0)
+ * @return ListReplayAnalysisIssueSessionsOptionalParameters
+ */
+ public ListReplayAnalysisIssueSessionsOptionalParameters pageNumber(Integer pageNumber) {
+ this.pageNumber = pageNumber;
+ return this;
+ }
+
+ /**
+ * Set pageSize.
+ *
+ * @param pageSize Number of items per page. Must be between 1 and 100. (optional, default to
+ * 15)
+ * @return ListReplayAnalysisIssueSessionsOptionalParameters
+ */
+ public ListReplayAnalysisIssueSessionsOptionalParameters pageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+ }
+
+ /**
+ * List replay analysis issue sessions.
+ *
+ * See {@link #listReplayAnalysisIssueSessionsWithHttpInfo}.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @return ReplayAnalysisIssueSessionsResponse
+ * @throws ApiException if fails to make API call
+ */
+ public ReplayAnalysisIssueSessionsResponse listReplayAnalysisIssueSessions(String issueId)
+ throws ApiException {
+ return listReplayAnalysisIssueSessionsWithHttpInfo(
+ issueId, new ListReplayAnalysisIssueSessionsOptionalParameters())
+ .getData();
+ }
+
+ /**
+ * List replay analysis issue sessions.
+ *
+ *
See {@link #listReplayAnalysisIssueSessionsWithHttpInfoAsync}.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @return CompletableFuture<ReplayAnalysisIssueSessionsResponse>
+ */
+ public CompletableFuture
+ listReplayAnalysisIssueSessionsAsync(String issueId) {
+ return listReplayAnalysisIssueSessionsWithHttpInfoAsync(
+ issueId, new ListReplayAnalysisIssueSessionsOptionalParameters())
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * List replay analysis issue sessions.
+ *
+ * See {@link #listReplayAnalysisIssueSessionsWithHttpInfo}.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @param parameters Optional parameters for the request.
+ * @return ReplayAnalysisIssueSessionsResponse
+ * @throws ApiException if fails to make API call
+ */
+ public ReplayAnalysisIssueSessionsResponse listReplayAnalysisIssueSessions(
+ String issueId, ListReplayAnalysisIssueSessionsOptionalParameters parameters)
+ throws ApiException {
+ return listReplayAnalysisIssueSessionsWithHttpInfo(issueId, parameters).getData();
+ }
+
+ /**
+ * List replay analysis issue sessions.
+ *
+ *
See {@link #listReplayAnalysisIssueSessionsWithHttpInfoAsync}.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @param parameters Optional parameters for the request.
+ * @return CompletableFuture<ReplayAnalysisIssueSessionsResponse>
+ */
+ public CompletableFuture
+ listReplayAnalysisIssueSessionsAsync(
+ String issueId, ListReplayAnalysisIssueSessionsOptionalParameters parameters) {
+ return listReplayAnalysisIssueSessionsWithHttpInfoAsync(issueId, parameters)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Retrieve a paginated list of sessions related to a specific RUM replay analysis issue.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @param parameters Optional parameters for the request.
+ * @return ApiResponse<ReplayAnalysisIssueSessionsResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | Bad Request | - |
+ * | 404 | Not Found | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse
+ listReplayAnalysisIssueSessionsWithHttpInfo(
+ String issueId, ListReplayAnalysisIssueSessionsOptionalParameters parameters)
+ throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "listReplayAnalysisIssueSessions";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'issueId' is set
+ if (issueId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'issueId' when calling listReplayAnalysisIssueSessions");
+ }
+ String sort = parameters.sort;
+ Integer pageNumber = parameters.pageNumber;
+ Integer pageSize = parameters.pageSize;
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/replay/analysis/issues/{issue_id}/sessions"
+ .replaceAll("\\{" + "issue_id" + "\\}", apiClient.escapeString(issueId.toString()));
+
+ List localVarQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "sort", sort));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[number]", pageNumber));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[size]", pageSize));
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.RumReplayAnalysisApi.listReplayAnalysisIssueSessions",
+ localVarPath,
+ localVarQueryParams,
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * List replay analysis issue sessions.
+ *
+ * See {@link #listReplayAnalysisIssueSessionsWithHttpInfo}.
+ *
+ * @param issueId Unique identifier of the issue. (required)
+ * @param parameters Optional parameters for the request.
+ * @return CompletableFuture<ApiResponse<ReplayAnalysisIssueSessionsResponse>>
+ */
+ public CompletableFuture>
+ listReplayAnalysisIssueSessionsWithHttpInfoAsync(
+ String issueId, ListReplayAnalysisIssueSessionsOptionalParameters parameters) {
+ // Check if unstable operation is enabled
+ String operationId = "listReplayAnalysisIssueSessions";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'issueId' is set
+ if (issueId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'issueId' when calling"
+ + " listReplayAnalysisIssueSessions"));
+ return result;
+ }
+ String sort = parameters.sort;
+ Integer pageNumber = parameters.pageNumber;
+ Integer pageSize = parameters.pageSize;
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/replay/analysis/issues/{issue_id}/sessions"
+ .replaceAll("\\{" + "issue_id" + "\\}", apiClient.escapeString(issueId.toString()));
+
+ List localVarQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "sort", sort));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[number]", pageNumber));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[size]", pageSize));
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.RumReplayAnalysisApi.listReplayAnalysisIssueSessions",
+ localVarPath,
+ localVarQueryParams,
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/api/RumReplayApi.java b/src/main/java/com/datadog/api/client/v2/api/RumReplayApi.java
new file mode 100644
index 00000000000..11e4308e92c
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/api/RumReplayApi.java
@@ -0,0 +1,332 @@
+package com.datadog.api.client.v2.api;
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.ApiResponse;
+import com.datadog.api.client.Pair;
+import com.datadog.api.client.v2.model.ReplaySummaryRequest;
+import com.datadog.api.client.v2.model.ReplaySummaryResponse;
+import jakarta.ws.rs.client.Invocation;
+import jakarta.ws.rs.core.GenericType;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class RumReplayApi {
+ private ApiClient apiClient;
+
+ public RumReplayApi() {
+ this(ApiClient.getDefaultApiClient());
+ }
+
+ public RumReplayApi(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Get the API client.
+ *
+ * @return API client
+ */
+ public ApiClient getApiClient() {
+ return apiClient;
+ }
+
+ /**
+ * Set the API client.
+ *
+ * @param apiClient an instance of API client
+ */
+ public void setApiClient(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /** Manage optional parameters to generateReplaySummary. */
+ public static class GenerateReplaySummaryOptionalParameters {
+ private Long ts;
+
+ /**
+ * Set ts.
+ *
+ * @param ts Server-side timestamp in milliseconds. (optional)
+ * @return GenerateReplaySummaryOptionalParameters
+ */
+ public GenerateReplaySummaryOptionalParameters ts(Long ts) {
+ this.ts = ts;
+ return this;
+ }
+ }
+
+ /**
+ * Generate replay summary.
+ *
+ * See {@link #generateReplaySummaryWithHttpInfo}.
+ *
+ * @param sessionId Unique identifier of the session. (required)
+ * @param dataSource Data source for the session. Valid values are rum,
+ * product_analytics, and replay. (required)
+ * @param body (required)
+ * @return ReplaySummaryResponse
+ * @throws ApiException if fails to make API call
+ */
+ public ReplaySummaryResponse generateReplaySummary(
+ String sessionId, String dataSource, ReplaySummaryRequest body) throws ApiException {
+ return generateReplaySummaryWithHttpInfo(
+ sessionId, dataSource, body, new GenerateReplaySummaryOptionalParameters())
+ .getData();
+ }
+
+ /**
+ * Generate replay summary.
+ *
+ *
See {@link #generateReplaySummaryWithHttpInfoAsync}.
+ *
+ * @param sessionId Unique identifier of the session. (required)
+ * @param dataSource Data source for the session. Valid values are rum,
+ * product_analytics, and replay. (required)
+ * @param body (required)
+ * @return CompletableFuture<ReplaySummaryResponse>
+ */
+ public CompletableFuture generateReplaySummaryAsync(
+ String sessionId, String dataSource, ReplaySummaryRequest body) {
+ return generateReplaySummaryWithHttpInfoAsync(
+ sessionId, dataSource, body, new GenerateReplaySummaryOptionalParameters())
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Generate replay summary.
+ *
+ * See {@link #generateReplaySummaryWithHttpInfo}.
+ *
+ * @param sessionId Unique identifier of the session. (required)
+ * @param dataSource Data source for the session. Valid values are rum,
+ * product_analytics, and replay. (required)
+ * @param body (required)
+ * @param parameters Optional parameters for the request.
+ * @return ReplaySummaryResponse
+ * @throws ApiException if fails to make API call
+ */
+ public ReplaySummaryResponse generateReplaySummary(
+ String sessionId,
+ String dataSource,
+ ReplaySummaryRequest body,
+ GenerateReplaySummaryOptionalParameters parameters)
+ throws ApiException {
+ return generateReplaySummaryWithHttpInfo(sessionId, dataSource, body, parameters).getData();
+ }
+
+ /**
+ * Generate replay summary.
+ *
+ *
See {@link #generateReplaySummaryWithHttpInfoAsync}.
+ *
+ * @param sessionId Unique identifier of the session. (required)
+ * @param dataSource Data source for the session. Valid values are rum,
+ * product_analytics, and replay. (required)
+ * @param body (required)
+ * @param parameters Optional parameters for the request.
+ * @return CompletableFuture<ReplaySummaryResponse>
+ */
+ public CompletableFuture generateReplaySummaryAsync(
+ String sessionId,
+ String dataSource,
+ ReplaySummaryRequest body,
+ GenerateReplaySummaryOptionalParameters parameters) {
+ return generateReplaySummaryWithHttpInfoAsync(sessionId, dataSource, body, parameters)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Generate an AI-powered summary for a RUM replay session, including chapter breakdowns and
+ * behavioral analysis.
+ *
+ * @param sessionId Unique identifier of the session. (required)
+ * @param dataSource Data source for the session. Valid values are rum,
+ * product_analytics, and replay. (required)
+ * @param body (required)
+ * @param parameters Optional parameters for the request.
+ * @return ApiResponse<ReplaySummaryResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | Bad Request | - |
+ * | 403 | Forbidden | - |
+ * | 404 | Not Found | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse generateReplaySummaryWithHttpInfo(
+ String sessionId,
+ String dataSource,
+ ReplaySummaryRequest body,
+ GenerateReplaySummaryOptionalParameters parameters)
+ throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "generateReplaySummary";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'sessionId' is set
+ if (sessionId == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'sessionId' when calling generateReplaySummary");
+ }
+
+ // verify the required parameter 'dataSource' is set
+ if (dataSource == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'dataSource' when calling generateReplaySummary");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'body' when calling generateReplaySummary");
+ }
+ Long ts = parameters.ts;
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/replay/summary/{session_id}"
+ .replaceAll("\\{" + "session_id" + "\\}", apiClient.escapeString(sessionId.toString()));
+
+ List localVarQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "data_source", dataSource));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "ts", ts));
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.RumReplayApi.generateReplaySummary",
+ localVarPath,
+ localVarQueryParams,
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Generate replay summary.
+ *
+ * See {@link #generateReplaySummaryWithHttpInfo}.
+ *
+ * @param sessionId Unique identifier of the session. (required)
+ * @param dataSource Data source for the session. Valid values are rum,
+ * product_analytics, and replay. (required)
+ * @param body (required)
+ * @param parameters Optional parameters for the request.
+ * @return CompletableFuture<ApiResponse<ReplaySummaryResponse>>
+ */
+ public CompletableFuture>
+ generateReplaySummaryWithHttpInfoAsync(
+ String sessionId,
+ String dataSource,
+ ReplaySummaryRequest body,
+ GenerateReplaySummaryOptionalParameters parameters) {
+ // Check if unstable operation is enabled
+ String operationId = "generateReplaySummary";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'sessionId' is set
+ if (sessionId == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'sessionId' when calling generateReplaySummary"));
+ return result;
+ }
+
+ // verify the required parameter 'dataSource' is set
+ if (dataSource == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'dataSource' when calling generateReplaySummary"));
+ return result;
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400, "Missing the required parameter 'body' when calling generateReplaySummary"));
+ return result;
+ }
+ Long ts = parameters.ts;
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/replay/summary/{session_id}"
+ .replaceAll("\\{" + "session_id" + "\\}", apiClient.escapeString(sessionId.toString()));
+
+ List localVarQueryParams = new ArrayList();
+ Map localVarHeaderParams = new HashMap();
+
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "data_source", dataSource));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "ts", ts));
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.RumReplayApi.generateReplaySummary",
+ localVarPath,
+ localVarQueryParams,
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisAffectedSession.java b/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisAffectedSession.java
new file mode 100644
index 00000000000..677a104d87d
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisAffectedSession.java
@@ -0,0 +1,188 @@
+/*
+ * 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.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import org.openapitools.jackson.nullable.JsonNullable;
+
+/** A session affected by a replay analysis issue. */
+@JsonPropertyOrder({
+ ReplayAnalysisAffectedSession.JSON_PROPERTY_SESSION_ID,
+ ReplayAnalysisAffectedSession.JSON_PROPERTY_SESSION_START_TIMESTAMP_MS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ReplayAnalysisAffectedSession {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_SESSION_ID = "session_id";
+ private String sessionId;
+
+ public static final String JSON_PROPERTY_SESSION_START_TIMESTAMP_MS =
+ "session_start_timestamp_ms";
+ private JsonNullable sessionStartTimestampMs = JsonNullable.undefined();
+
+ public ReplayAnalysisAffectedSession() {}
+
+ @JsonCreator
+ public ReplayAnalysisAffectedSession(
+ @JsonProperty(required = true, value = JSON_PROPERTY_SESSION_ID) String sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ public ReplayAnalysisAffectedSession sessionId(String sessionId) {
+ this.sessionId = sessionId;
+ return this;
+ }
+
+ /**
+ * Unique identifier of the affected session.
+ *
+ * @return sessionId
+ */
+ @JsonProperty(JSON_PROPERTY_SESSION_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ public void setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ public ReplayAnalysisAffectedSession sessionStartTimestampMs(Long sessionStartTimestampMs) {
+ this.sessionStartTimestampMs = JsonNullable.of(sessionStartTimestampMs);
+ return this;
+ }
+
+ /**
+ * Session start timestamp in milliseconds.
+ *
+ * @return sessionStartTimestampMs
+ */
+ @jakarta.annotation.Nullable
+ @JsonIgnore
+ public Long getSessionStartTimestampMs() {
+ return sessionStartTimestampMs.orElse(null);
+ }
+
+ @JsonProperty(JSON_PROPERTY_SESSION_START_TIMESTAMP_MS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public JsonNullable getSessionStartTimestampMs_JsonNullable() {
+ return sessionStartTimestampMs;
+ }
+
+ @JsonProperty(JSON_PROPERTY_SESSION_START_TIMESTAMP_MS)
+ public void setSessionStartTimestampMs_JsonNullable(JsonNullable sessionStartTimestampMs) {
+ this.sessionStartTimestampMs = sessionStartTimestampMs;
+ }
+
+ public void setSessionStartTimestampMs(Long sessionStartTimestampMs) {
+ this.sessionStartTimestampMs = JsonNullable.of(sessionStartTimestampMs);
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return ReplayAnalysisAffectedSession
+ */
+ @JsonAnySetter
+ public ReplayAnalysisAffectedSession putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this ReplayAnalysisAffectedSession object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ReplayAnalysisAffectedSession replayAnalysisAffectedSession = (ReplayAnalysisAffectedSession) o;
+ return Objects.equals(this.sessionId, replayAnalysisAffectedSession.sessionId)
+ && Objects.equals(
+ this.sessionStartTimestampMs, replayAnalysisAffectedSession.sessionStartTimestampMs)
+ && Objects.equals(
+ this.additionalProperties, replayAnalysisAffectedSession.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(sessionId, sessionStartTimestampMs, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ReplayAnalysisAffectedSession {\n");
+ sb.append(" sessionId: ").append(toIndentedString(sessionId)).append("\n");
+ sb.append(" sessionStartTimestampMs: ")
+ .append(toIndentedString(sessionStartTimestampMs))
+ .append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisIssueData.java b/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisIssueData.java
new file mode 100644
index 00000000000..be7ada00a1e
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisIssueData.java
@@ -0,0 +1,209 @@
+/*
+ * 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.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/** Data object representing a RUM replay analysis issue. */
+@JsonPropertyOrder({
+ ReplayAnalysisIssueData.JSON_PROPERTY_ATTRIBUTES,
+ ReplayAnalysisIssueData.JSON_PROPERTY_ID,
+ ReplayAnalysisIssueData.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ReplayAnalysisIssueData {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_ATTRIBUTES = "attributes";
+ private ReplayAnalysisIssueDataAttributes attributes;
+
+ public static final String JSON_PROPERTY_ID = "id";
+ private String id;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ private ReplayAnalysisIssueDataType type = ReplayAnalysisIssueDataType.ISSUES;
+
+ public ReplayAnalysisIssueData() {}
+
+ @JsonCreator
+ public ReplayAnalysisIssueData(
+ @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES)
+ ReplayAnalysisIssueDataAttributes attributes,
+ @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) ReplayAnalysisIssueDataType type) {
+ this.attributes = attributes;
+ this.unparsed |= attributes.unparsed;
+ this.id = id;
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ }
+
+ public ReplayAnalysisIssueData attributes(ReplayAnalysisIssueDataAttributes attributes) {
+ this.attributes = attributes;
+ this.unparsed |= attributes.unparsed;
+ return this;
+ }
+
+ /**
+ * Attributes of a RUM replay analysis issue.
+ *
+ * @return attributes
+ */
+ @JsonProperty(JSON_PROPERTY_ATTRIBUTES)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ReplayAnalysisIssueDataAttributes getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(ReplayAnalysisIssueDataAttributes attributes) {
+ this.attributes = attributes;
+ }
+
+ public ReplayAnalysisIssueData id(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * Unique identifier of the issue.
+ *
+ * @return id
+ */
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ReplayAnalysisIssueData type(ReplayAnalysisIssueDataType type) {
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ return this;
+ }
+
+ /**
+ * RUM replay analysis issue resource type.
+ *
+ * @return type
+ */
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ReplayAnalysisIssueDataType getType() {
+ return type;
+ }
+
+ public void setType(ReplayAnalysisIssueDataType type) {
+ if (!type.isValid()) {
+ this.unparsed = true;
+ }
+ this.type = type;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return ReplayAnalysisIssueData
+ */
+ @JsonAnySetter
+ public ReplayAnalysisIssueData putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this ReplayAnalysisIssueData object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ReplayAnalysisIssueData replayAnalysisIssueData = (ReplayAnalysisIssueData) o;
+ return Objects.equals(this.attributes, replayAnalysisIssueData.attributes)
+ && Objects.equals(this.id, replayAnalysisIssueData.id)
+ && Objects.equals(this.type, replayAnalysisIssueData.type)
+ && Objects.equals(this.additionalProperties, replayAnalysisIssueData.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(attributes, id, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ReplayAnalysisIssueData {\n");
+ sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n");
+ sb.append(" id: ").append(toIndentedString(id)).append("\n");
+ sb.append(" type: ").append(toIndentedString(type)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisIssueDataAttributes.java b/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisIssueDataAttributes.java
new file mode 100644
index 00000000000..21913b16429
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ReplayAnalysisIssueDataAttributes.java
@@ -0,0 +1,488 @@
+/*
+ * 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.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.time.OffsetDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import org.openapitools.jackson.nullable.JsonNullable;
+
+/** Attributes of a RUM replay analysis issue. */
+@JsonPropertyOrder({
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_AFFECTED_SESSIONS,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_APPLICATION_ID,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_CREATED_AT,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_DESCRIPTION,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_JOURNEY_QUERY,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_NAME,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_REPRESENTATIVE_SESSION,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_SESSION_COUNT,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_SEVERITY,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_UPDATED_AT,
+ ReplayAnalysisIssueDataAttributes.JSON_PROPERTY_VALIDATION_VERDICT
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ReplayAnalysisIssueDataAttributes {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_AFFECTED_SESSIONS = "affected_sessions";
+ private List affectedSessions = new ArrayList<>();
+
+ public static final String JSON_PROPERTY_APPLICATION_ID = "application_id";
+ private String applicationId;
+
+ public static final String JSON_PROPERTY_CREATED_AT = "created_at";
+ private OffsetDateTime createdAt;
+
+ public static final String JSON_PROPERTY_DESCRIPTION = "description";
+ private String description;
+
+ public static final String JSON_PROPERTY_JOURNEY_QUERY = "journey_query";
+ private JsonNullable