From 93dc014642458fa04864e9e7d12b1e84416119ee Mon Sep 17 00:00:00 2001 From: Saraj Singh Manes <63564740+manessaraj@users.noreply.github.com> Date: Fri, 27 Mar 2026 12:15:21 -0400 Subject: [PATCH 01/30] feat(refactor): Move common exceptions out of the discover db (#111713) Move IssueSearchQueryException to common exceptions module. --- .github/CODEOWNERS | 1 + src/sentry/incidents/utils/process_update_helpers.py | 2 +- src/sentry/search/eap/resolver.py | 2 +- src/sentry/search/events/datasets/discover.py | 12 +----------- src/sentry/search/exceptions.py | 12 ++++++++++++ .../incidents/utils/test_process_update_helpers.py | 2 +- 6 files changed, 17 insertions(+), 14 deletions(-) create mode 100644 src/sentry/search/exceptions.py diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 75e586ab5d82e3..df66d0dabb8c8d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -294,6 +294,7 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get /src/sentry/search/events/ @getsentry/data-browsing /src/sentry/search/eap/ @getsentry/data-browsing +/src/sentry/search/exceptions.py @getsentry/data-browsing /src/sentry/issue_detection/ @getsentry/issue-detection-backend /tests/sentry/issue_detection/ @getsentry/issue-detection-backend diff --git a/src/sentry/incidents/utils/process_update_helpers.py b/src/sentry/incidents/utils/process_update_helpers.py index 1b3cd69449b577..9d0cd395f59f0e 100644 --- a/src/sentry/incidents/utils/process_update_helpers.py +++ b/src/sentry/incidents/utils/process_update_helpers.py @@ -5,7 +5,7 @@ from sentry.incidents.utils.types import QuerySubscriptionUpdate from sentry.search.eap.utils import add_start_end_conditions -from sentry.search.events.datasets.discover import InvalidIssueSearchQuery +from sentry.search.exceptions import InvalidIssueSearchQuery from sentry.snuba.dataset import Dataset from sentry.snuba.entity_subscription import ( ENTITY_TIME_COLUMNS, diff --git a/src/sentry/search/eap/resolver.py b/src/sentry/search/eap/resolver.py index 819f2392587812..53822371291a4d 100644 --- a/src/sentry/search/eap/resolver.py +++ b/src/sentry/search/eap/resolver.py @@ -64,9 +64,9 @@ from sentry.search.events import constants as qb_constants from sentry.search.events import fields from sentry.search.events import filter as event_filter -from sentry.search.events.datasets.discover import InvalidIssueSearchQuery from sentry.search.events.filter import to_list from sentry.search.events.types import SAMPLING_MODES, SnubaParams +from sentry.search.exceptions import InvalidIssueSearchQuery def collect_issue_short_ids_from_parsed_terms(terms: Sequence[object]) -> set[str]: diff --git a/src/sentry/search/events/datasets/discover.py b/src/sentry/search/events/datasets/discover.py index 5601278c015c79..ca37706038a381 100644 --- a/src/sentry/search/events/datasets/discover.py +++ b/src/sentry/search/events/datasets/discover.py @@ -95,23 +95,13 @@ ) from sentry.search.events.filter import to_list from sentry.search.events.types import SelectType, WhereType +from sentry.search.exceptions import InvalidIssueSearchQuery from sentry.search.utils import DEVICE_CLASS from sentry.snuba.dataset import Dataset from sentry.snuba.referrer import Referrer from sentry.utils.numbers import format_grouped_length -class InvalidIssueSearchQuery(InvalidSearchQuery): - """Raised when an issue filter references non-existent issue IDs.""" - - def __init__(self, invalid_ids: list[str]): - self.invalid_ids = invalid_ids - super().__init__(f"Issue IDs do not exist: {invalid_ids}") - - def __str__(self) -> str: - return f"Issue IDs do not exist: {self.invalid_ids}" - - class DiscoverDatasetConfig(DatasetConfig): custom_threshold_columns = { "apdex()", diff --git a/src/sentry/search/exceptions.py b/src/sentry/search/exceptions.py new file mode 100644 index 00000000000000..6924f9ae808ff9 --- /dev/null +++ b/src/sentry/search/exceptions.py @@ -0,0 +1,12 @@ +from sentry.exceptions import InvalidSearchQuery + + +class InvalidIssueSearchQuery(InvalidSearchQuery): + """Raised when an issue filter references non-existent issue IDs.""" + + def __init__(self, invalid_ids: list[str]): + self.invalid_ids = invalid_ids + super().__init__(f"Issue IDs do not exist: {invalid_ids}") + + def __str__(self) -> str: + return f"Issue IDs do not exist: {self.invalid_ids}" diff --git a/tests/sentry/incidents/utils/test_process_update_helpers.py b/tests/sentry/incidents/utils/test_process_update_helpers.py index 85fa3d2912baf4..82309e8f678dac 100644 --- a/tests/sentry/incidents/utils/test_process_update_helpers.py +++ b/tests/sentry/incidents/utils/test_process_update_helpers.py @@ -5,7 +5,7 @@ from sentry.incidents.utils.process_update_helpers import get_aggregation_value from sentry.incidents.utils.types import QuerySubscriptionUpdate -from sentry.search.events.datasets.discover import InvalidIssueSearchQuery +from sentry.search.exceptions import InvalidIssueSearchQuery from sentry.snuba.dataset import Dataset from sentry.snuba.entity_subscription import get_entity_subscription_from_snuba_query from sentry.snuba.models import SnubaQuery, SnubaQueryEventType From 6bcb137eeb6491e144cc59358ab8568f9202d5d4 Mon Sep 17 00:00:00 2001 From: Malachi Willey Date: Fri, 27 Mar 2026 09:21:11 -0700 Subject: [PATCH 02/30] fix(aci): Include project alerts on monitor list page (#111690) On the monitor list views we are only showing the directly-connected alerts. The detail pages already show the full list including project-connected alerts. This simply adds the functionality to the list view. --- .../detectorListConnectedAutomations.spec.tsx | 95 +++++++++++++++++++ .../detectorListConnectedAutomations.tsx | 34 +++++-- .../detectorListTable/detectorListRow.tsx | 5 +- .../useIssueStreamDetectorsForProject.tsx | 15 ++- 4 files changed, 137 insertions(+), 12 deletions(-) create mode 100644 static/app/views/detectors/components/detectorListConnectedAutomations.spec.tsx diff --git a/static/app/views/detectors/components/detectorListConnectedAutomations.spec.tsx b/static/app/views/detectors/components/detectorListConnectedAutomations.spec.tsx new file mode 100644 index 00000000000000..e0d0f7485fb6d2 --- /dev/null +++ b/static/app/views/detectors/components/detectorListConnectedAutomations.spec.tsx @@ -0,0 +1,95 @@ +import {AutomationFixture} from 'sentry-fixture/automations'; +import {IssueStreamDetectorFixture} from 'sentry-fixture/detectors'; + +import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; + +import {DetectorListConnectedAutomations} from 'sentry/views/detectors/components/detectorListConnectedAutomations'; + +describe('DetectorListConnectedAutomations', () => { + beforeEach(() => { + MockApiClient.clearMockResponses(); + }); + + it('renders combined count of direct and project alerts', async () => { + MockApiClient.addMockResponse({ + url: '/organizations/org-slug/workflows/', + body: [ + AutomationFixture({id: '1', name: 'Direct Alert'}), + AutomationFixture({id: '2', name: 'Project Alert'}), + ], + }); + + MockApiClient.addMockResponse({ + url: '/organizations/org-slug/detectors/', + body: [IssueStreamDetectorFixture({workflowIds: ['2']})], + }); + + render(); + + expect(await screen.findByText('2 alerts')).toBeInTheDocument(); + }); + + it('deduplicates automation ids from both sources', async () => { + MockApiClient.addMockResponse({ + url: '/organizations/org-slug/workflows/', + body: [AutomationFixture({id: '1', name: 'Shared Alert'})], + }); + + MockApiClient.addMockResponse({ + url: '/organizations/org-slug/detectors/', + body: [IssueStreamDetectorFixture({workflowIds: ['1']})], + }); + + render(); + + expect(await screen.findByText('1 alert')).toBeInTheDocument(); + }); + + it('renders empty cell when no automations are connected', async () => { + MockApiClient.addMockResponse({ + url: '/organizations/org-slug/workflows/', + body: [], + }); + + MockApiClient.addMockResponse({ + url: '/organizations/org-slug/detectors/', + body: [IssueStreamDetectorFixture({workflowIds: []})], + }); + + render(); + + // EmptyCell renders an em dash + expect(await screen.findByText('—')).toBeInTheDocument(); + }); + + it('shows automation names in hovercard on hover', async () => { + MockApiClient.addMockResponse({ + url: '/organizations/org-slug/workflows/', + body: [ + AutomationFixture({id: '1', name: 'Direct Alert'}), + AutomationFixture({id: '2', name: 'Project Alert'}), + ], + }); + + MockApiClient.addMockResponse({ + url: '/organizations/org-slug/detectors/', + body: [IssueStreamDetectorFixture({workflowIds: ['2']})], + }); + + render(); + + await userEvent.hover(await screen.findByText('2 alerts')); + + const directAlert = await screen.findByText('Direct Alert'); + const projectAlert = screen.getByText('Project Alert'); + + expect(directAlert.closest('a')).toHaveAttribute( + 'href', + '/organizations/org-slug/monitors/alerts/1/' + ); + expect(projectAlert.closest('a')).toHaveAttribute( + 'href', + '/organizations/org-slug/monitors/alerts/2/' + ); + }); +}); diff --git a/static/app/views/detectors/components/detectorListConnectedAutomations.tsx b/static/app/views/detectors/components/detectorListConnectedAutomations.tsx index 912396682c29f2..1fd7c88a5e5ee4 100644 --- a/static/app/views/detectors/components/detectorListConnectedAutomations.tsx +++ b/static/app/views/detectors/components/detectorListConnectedAutomations.tsx @@ -1,3 +1,4 @@ +import {useMemo} from 'react'; import {ClassNames} from '@emotion/react'; import styled from '@emotion/styled'; @@ -15,9 +16,11 @@ import {AutomationActionSummary} from 'sentry/views/automations/components/autom import {useAutomationsQuery} from 'sentry/views/automations/hooks'; import {getAutomationActions} from 'sentry/views/automations/hooks/utils'; import {makeAutomationDetailsPathname} from 'sentry/views/automations/pathnames'; +import {useIssueStreamDetectorsForProject} from 'sentry/views/detectors/utils/useIssueStreamDetectorsForProject'; type DetectorListConnectedAutomationsProps = { automationIds: string[]; + projectId: string; }; function ConnectedAutomationsHoverBody({automationIds}: {automationIds: string[]}) { @@ -27,6 +30,9 @@ function ConnectedAutomationsHoverBody({automationIds}: {automationIds: string[] ids: automationIds.slice(0, 5), }); const hasMore = automationIds.length > 5; + const hasMoreText = hasMore ? ( + {tn('%s more', '%s more', automationIds.length - 5)} + ) : null; if (isError) { return ; @@ -41,6 +47,7 @@ function ConnectedAutomationsHoverBody({automationIds}: {automationIds: string[] ))} + {hasMoreText} ); } @@ -65,17 +72,32 @@ function ConnectedAutomationsHoverBody({automationIds}: {automationIds: string[] ); })} - {hasMore && ( - {tn('%s more', '%s more', automationIds.length - 5)} - )} + {hasMoreText} ); } export function DetectorListConnectedAutomations({ automationIds, + projectId, }: DetectorListConnectedAutomationsProps) { - if (!automationIds.length) { + const {data: issueStreamDetectors, isPending} = + useIssueStreamDetectorsForProject(projectId); + + // Combine the automation IDs from the project's issue stream detector with the directly-connected ones + const combinedAutomationIds = useMemo(() => { + if (isPending) { + return automationIds; + } + const issueStreamAutomationIds = issueStreamDetectors?.[0]?.workflowIds ?? []; + return [...new Set([...automationIds, ...issueStreamAutomationIds])]; + }, [automationIds, issueStreamDetectors, isPending]); + + if (isPending) { + return ; + } + + if (!combinedAutomationIds.length) { return ; } @@ -84,13 +106,13 @@ export function DetectorListConnectedAutomations({ {({css}) => ( } + body={} bodyClassName={css` padding: 0; `} showUnderline > - {tn('%s alert', '%s alerts', automationIds.length)} + {tn('%s alert', '%s alerts', combinedAutomationIds.length)} )} diff --git a/static/app/views/detectors/components/detectorListTable/detectorListRow.tsx b/static/app/views/detectors/components/detectorListTable/detectorListRow.tsx index 72c082bbccb326..43056f88ff8a63 100644 --- a/static/app/views/detectors/components/detectorListTable/detectorListRow.tsx +++ b/static/app/views/detectors/components/detectorListTable/detectorListRow.tsx @@ -52,7 +52,10 @@ export function DetectorListRow({detector, selected, onSelect}: DetectorListRowP - + {additionalColumns.map(col => ( {col.renderCell(detector)} diff --git a/static/app/views/detectors/utils/useIssueStreamDetectorsForProject.tsx b/static/app/views/detectors/utils/useIssueStreamDetectorsForProject.tsx index a2287f4c0b1537..fc9656bbbc03b3 100644 --- a/static/app/views/detectors/utils/useIssueStreamDetectorsForProject.tsx +++ b/static/app/views/detectors/utils/useIssueStreamDetectorsForProject.tsx @@ -5,9 +5,14 @@ import {useDetectorsQuery} from 'sentry/views/detectors/hooks'; * Issue stream detectors are used to connect automations to "all issues in a project". */ export function useIssueStreamDetectorsForProject(projectId: string | undefined) { - return useDetectorsQuery({ - query: 'type:issue_stream', - projects: [Number(projectId)], - includeIssueStreamDetectors: true, - }); + return useDetectorsQuery( + { + query: 'type:issue_stream', + projects: [Number(projectId)], + includeIssueStreamDetectors: true, + }, + { + staleTime: Infinity, + } + ); } From df62fecf012139a8aec76e6b75ca7efa3ecca39f Mon Sep 17 00:00:00 2001 From: Tony Xiao Date: Fri, 27 Mar 2026 12:26:04 -0400 Subject: [PATCH 03/30] feat(autofix): Handle PR creation in group ai autofix endpoint (#111565) Currently the PR creation step is handled in the explorer update endpoint. This meant we had to feature flag it such that it can be used with just autofix-on-explorer. This change brings the PR creation step into the group ai autofix endpoint so that it is centralized in 1 place. It also serves as a place where we'll be able to inject the trailing text to say `FIXES SENTRY-123` in the PR description. --- src/sentry/seer/autofix/autofix_agent.py | 24 +++-- src/sentry/seer/autofix/on_completion_hook.py | 68 ++++++--------- src/sentry/seer/endpoints/group_ai_autofix.py | 31 +++++-- src/sentry/seer/entrypoints/operator.py | 7 +- .../test_autofix_on_completion_hook.py | 19 ++-- .../seer/endpoints/test_group_ai_autofix.py | 87 +++++++++++++++++++ 6 files changed, 165 insertions(+), 71 deletions(-) diff --git a/src/sentry/seer/autofix/autofix_agent.py b/src/sentry/seer/autofix/autofix_agent.py index 860cc17e880c23..a9276110ee4870 100644 --- a/src/sentry/seer/autofix/autofix_agent.py +++ b/src/sentry/seer/autofix/autofix_agent.py @@ -31,6 +31,7 @@ from sentry.seer.explorer.client import SeerExplorerClient from sentry.seer.explorer.client_models import SeerRunState from sentry.seer.models import SeerRepoDefinition +from sentry.seer.models.seer_api_models import SeerPermissionError from sentry.sentry_apps.metrics import SentryAppEventType from sentry.sentry_apps.tasks.sentry_apps import broadcast_webhooks_for_organization from sentry.sentry_apps.utils.webhooks import SeerActionType @@ -451,12 +452,7 @@ def trigger_coding_agent_handoff( "failures": [{"error_message": "No repositories configured in project preferences"}], } - client = SeerExplorerClient( - organization=group.organization, - user=None, - category_key="autofix", - category_value=str(group.id), - ) + client = get_autofix_explorer_client(group) state = client.get_run(run_id) repo = _get_relevant_repo(state, repo_definitions, run_id, group) @@ -496,3 +492,19 @@ def trigger_coding_agent_handoff( branch_name_base=group.title or "seer", auto_create_pr=auto_create_pr, ) + + +def trigger_push_changes(group: Group, run_id: int, state: SeerRunState | None = None): + client = get_autofix_explorer_client(group) + + if state is None: + try: + state = client.get_run(run_id) + except ValueError: + raise SeerPermissionError("Unknown run id for group") + + group_id = state.metadata.get("group_id") if state.metadata else None + if group_id != group.id: + raise SeerPermissionError("Unknown run id for group") + + client.push_changes(run_id, blocking=False) diff --git a/src/sentry/seer/autofix/on_completion_hook.py b/src/sentry/seer/autofix/on_completion_hook.py index 6c10e988fa5867..5aa2d3279bd36a 100644 --- a/src/sentry/seer/autofix/on_completion_hook.py +++ b/src/sentry/seer/autofix/on_completion_hook.py @@ -10,11 +10,11 @@ AutofixStep, trigger_autofix_explorer, trigger_coding_agent_handoff, + trigger_push_changes, ) from sentry.seer.autofix.constants import AutofixReferrer from sentry.seer.autofix.utils import AutofixStoppingPoint, get_project_seer_preferences from sentry.seer.entrypoints.operator import SeerAutofixOperator, process_autofix_updates -from sentry.seer.explorer.client import SeerExplorerClient from sentry.seer.explorer.client_models import Artifact from sentry.seer.explorer.client_utils import fetch_run_status from sentry.seer.explorer.on_completion_hook import ExplorerOnCompletionHook @@ -316,6 +316,20 @@ def _maybe_continue_pipeline( ) return + # Get the group + try: + group = Group.objects.get(id=group_id, project__organization=organization) + except Group.DoesNotExist: + logger.warning( + "autofix.on_completion_hook.group_not_found", + extra={ + "run_id": run_id, + "organization_id": organization.id, + "group_id": group_id, + }, + ) + return + if current_step is None: logger.warning( "autofix.on_completion_hook.no_current_step", @@ -330,11 +344,9 @@ def _maybe_continue_pipeline( return # Check if we should trigger coding agent handoff instead of continuing - handoff_config = cls._get_handoff_config_if_applicable( - stopping_point, current_step, group_id - ) + handoff_config = cls._get_handoff_config_if_applicable(stopping_point, current_step, group) if handoff_config: - cls._trigger_coding_agent_handoff(organization, run_id, group_id, handoff_config) + cls._trigger_coding_agent_handoff(organization, run_id, group, handoff_config) return # Special case: if stopping_point is open_pr and we just finished code_changes, push changes @@ -342,7 +354,7 @@ def _maybe_continue_pipeline( stopping_point == AutofixStoppingPoint.OPEN_PR and current_step == AutofixStep.CODE_CHANGES ): - cls._push_changes(organization, run_id, state) + cls._push_changes(group, run_id, state) return # Get the next step @@ -363,20 +375,6 @@ def _maybe_continue_pipeline( ) return - # Get the group - try: - group = Group.objects.get(id=group_id, project__organization=organization) - except Group.DoesNotExist: - logger.warning( - "autofix.on_completion_hook.group_not_found", - extra={ - "run_id": run_id, - "organization_id": organization.id, - "group_id": group_id, - }, - ) - return - # Trigger the next step logger.info( "autofix.on_completion_hook.continuing_pipeline", @@ -396,7 +394,7 @@ def _maybe_continue_pipeline( ) @classmethod - def _push_changes(cls, organization: Organization, run_id: int, state: SeerRunState) -> None: + def _push_changes(cls, group: Group, run_id: int, state: SeerRunState) -> None: """Push code changes to create PRs.""" # Check if there are code changes to push has_changes, is_synced = state.has_code_changes() @@ -405,7 +403,7 @@ def _push_changes(cls, organization: Organization, run_id: int, state: SeerRunSt "autofix.on_completion_hook.no_changes_to_push", extra={ "run_id": run_id, - "organization_id": organization.id, + "organization_id": group.organization.id, "has_changes": has_changes, "is_synced": is_synced, }, @@ -414,16 +412,15 @@ def _push_changes(cls, organization: Organization, run_id: int, state: SeerRunSt logger.info( "autofix.on_completion_hook.pushing_changes", - extra={"run_id": run_id, "organization_id": organization.id}, + extra={"run_id": run_id, "organization_id": group.organization.id}, ) try: - client = SeerExplorerClient(organization=organization, user=None) - client.push_changes(run_id, blocking=False) + trigger_push_changes(group, run_id, state=state) except Exception: logger.exception( "autofix.on_completion_hook.push_changes_failed", - extra={"run_id": run_id, "organization_id": organization.id}, + extra={"run_id": run_id, "organization_id": group.organization.id}, ) @classmethod @@ -431,7 +428,7 @@ def _get_handoff_config_if_applicable( cls, stopping_point: AutofixStoppingPoint, current_step: AutofixStep | None, - group_id: int, + group: Group, ) -> SeerAutomationHandoffConfiguration | None: """ Read project preferences and return handoff config if applicable. @@ -454,13 +451,12 @@ def _get_handoff_config_if_applicable( return None # Check project preferences - group = Group.objects.get(id=group_id) try: preference_response = get_project_seer_preferences(group.project_id) except (SeerApiError, SeerApiResponseValidationError): logger.exception( "autofix.on_completion_hook.get_preferences_failed", - extra={"group_id": group_id, "project_id": group.project_id}, + extra={"group_id": group.id, "project_id": group.project_id}, ) return None if not preference_response or not preference_response.preference: @@ -476,7 +472,7 @@ def _trigger_coding_agent_handoff( cls, organization: Organization, run_id: int, - group_id: int, + group: Group, handoff_config: SeerAutomationHandoffConfiguration, ) -> None: """Trigger coding agent handoff using the configured integration.""" @@ -485,14 +481,13 @@ def _trigger_coding_agent_handoff( extra={ "run_id": run_id, "organization_id": organization.id, - "group_id": group_id, + "group_id": group.id, "integration_id": handoff_config.integration_id, "target": handoff_config.target, }, ) try: - group = Group.objects.get(id=group_id) result = trigger_coding_agent_handoff( group=group, run_id=run_id, @@ -507,15 +502,6 @@ def _trigger_coding_agent_handoff( "failures": len(result.get("failures", [])), }, ) - except Group.DoesNotExist: - logger.exception( - "autofix.on_completion_hook.coding_agent_handoff_group_not_found", - extra={ - "run_id": run_id, - "organization_id": organization.id, - "group_id": group_id, - }, - ) except Exception: logger.exception( "autofix.on_completion_hook.coding_agent_handoff_failed", diff --git a/src/sentry/seer/endpoints/group_ai_autofix.py b/src/sentry/seer/endpoints/group_ai_autofix.py index 8bf9efc54050df..6c6ff6e21506e3 100644 --- a/src/sentry/seer/endpoints/group_ai_autofix.py +++ b/src/sentry/seer/endpoints/group_ai_autofix.py @@ -4,7 +4,7 @@ from typing import Any from drf_spectacular.utils import extend_schema -from rest_framework import serializers +from rest_framework import serializers, status from rest_framework.exceptions import PermissionDenied from rest_framework.request import Request from rest_framework.response import Response @@ -38,6 +38,7 @@ get_autofix_explorer_state, trigger_autofix_explorer, trigger_coding_agent_handoff, + trigger_push_changes, ) from sentry.seer.autofix.coding_agent import ( poll_claude_code_agents, @@ -87,6 +88,7 @@ class ExplorerAutofixRequestSerializer(CamelSnakeSerializer): "root_cause", "solution", "code_changes", + "open_pr", "impact_assessment", "triage", "coding_agent_handoff", @@ -223,15 +225,15 @@ def _post_explorer(self, request: Request, group: Group) -> Response: """Handle POST for Explorer-based autofix.""" serializer = ExplorerAutofixRequestSerializer(data=request.data) if not serializer.is_valid(): - return Response(serializer.errors, status=400) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) data = serializer.validated_data step = data.get("step", "root_cause") stopping_point = data.get("stopping_point") + run_id = data.get("run_id") # Handle third-party coding agent handoff separately if step == "coding_agent_handoff": - run_id = data.get("run_id") integration_id = data.get("integration_id") provider = data.get("provider") if not run_id or (not integration_id and not provider): @@ -239,12 +241,12 @@ def _post_explorer(self, request: Request, group: Group) -> Response: { "detail": "run_id and either integration_id or provider are required for coding_agent_handoff" }, - status=400, + status=status.HTTP_400_BAD_REQUEST, ) if integration_id and provider: return Response( {"detail": "Cannot specify both integration_id and provider"}, - status=400, + status=status.HTTP_400_BAD_REQUEST, ) result = trigger_coding_agent_handoff( @@ -254,7 +256,18 @@ def _post_explorer(self, request: Request, group: Group) -> Response: provider=provider, user_id=request.user.id if request.user else None, ) - return Response(result, status=202) + return Response(result, status=status.HTTP_202_ACCEPTED) + + if step == "open_pr": + if not run_id: + return Response( + {"detail": "run_id is required for open_pr"}, status=status.HTTP_400_BAD_REQUEST + ) + try: + trigger_push_changes(group, run_id) + except SeerPermissionError: + return Response(status=status.HTTP_404_NOT_FOUND) + return Response({"run_id": run_id}, status=status.HTTP_202_ACCEPTED) # Handle all built-in Seer steps try: @@ -263,11 +276,11 @@ def _post_explorer(self, request: Request, group: Group) -> Response: step=AutofixStep(step), referrer=AutofixReferrer.GROUP_AUTOFIX_ENDPOINT, stopping_point=AutofixStoppingPoint(stopping_point) if stopping_point else None, - run_id=data.get("run_id"), + run_id=run_id, intelligence_level=data["intelligence_level"], user_context=data.get("user_context"), ) - return Response({"run_id": run_id}, status=202) + return Response({"run_id": run_id}, status=status.HTTP_202_ACCEPTED) except SeerPermissionError as e: raise PermissionDenied(str(e)) @@ -275,7 +288,7 @@ def _post_legacy(self, request: Request, group: Group) -> Response: """Handle POST for legacy autofix.""" serializer = AutofixRequestSerializer(data=request.data) if not serializer.is_valid(): - return Response(serializer.errors, status=400) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) data = serializer.validated_data diff --git a/src/sentry/seer/entrypoints/operator.py b/src/sentry/seer/entrypoints/operator.py index 8214a2d3e64207..ea2da106680480 100644 --- a/src/sentry/seer/entrypoints/operator.py +++ b/src/sentry/seer/entrypoints/operator.py @@ -165,9 +165,9 @@ def trigger_autofix_explorer( ) -> None: from sentry.seer.autofix.autofix_agent import ( AutofixStep, - get_autofix_explorer_client, get_autofix_explorer_state, trigger_autofix_explorer, + trigger_push_changes, ) event_lifecyle = SeerOperatorEventLifecycleMetric( @@ -227,14 +227,13 @@ def trigger_autofix_explorer( run_id=None, ) elif stopping_point == AutofixStoppingPoint.OPEN_PR: - client = get_autofix_explorer_client(group) - client.push_changes(run_id, blocking=False) + trigger_push_changes(group, run_id) else: # NOTE: Stopping point here is really just what # step to run next. Not the same as the stopping_point # argument supported by `trigger_autofix_explorer` which allows one # to run multiple steps at once - run_id = trigger_autofix_explorer( + trigger_autofix_explorer( group=group, step=AutofixStep.from_autofix_stopping_point(stopping_point), referrer=AutofixReferrer.SLACK, diff --git a/tests/sentry/seer/autofix/test_autofix_on_completion_hook.py b/tests/sentry/seer/autofix/test_autofix_on_completion_hook.py index 0e540a9ceff578..1d0098b8b24445 100644 --- a/tests/sentry/seer/autofix/test_autofix_on_completion_hook.py +++ b/tests/sentry/seer/autofix/test_autofix_on_completion_hook.py @@ -243,12 +243,9 @@ def test_maybe_continue_pipeline_continues_to_next_step(self, mock_trigger, mock assert call_kwargs["step"] == AutofixStep.SOLUTION assert call_kwargs["run_id"] == 123 - @patch("sentry.seer.autofix.on_completion_hook.SeerExplorerClient") - def test_maybe_continue_pipeline_pushes_changes_for_open_pr(self, mock_client_class): + @patch("sentry.seer.autofix.on_completion_hook.trigger_push_changes") + def test_maybe_continue_pipeline_pushes_changes_for_open_pr(self, mock_push_changes): """Pushes changes when stopping_point is open_pr and code_changes completed.""" - mock_client = MagicMock() - mock_client_class.return_value = mock_client - state = run_state( blocks=[ root_cause_memory_block(), @@ -261,7 +258,7 @@ def test_maybe_continue_pipeline_pushes_changes_for_open_pr(self, mock_client_cl }, ) AutofixOnCompletionHook._maybe_continue_pipeline(self.organization, 123, state) - mock_client.push_changes.assert_called_once_with(123, blocking=False) + mock_push_changes.assert_called_once_with(self.group, 123, state=state) class TestPipelineConstants(TestCase): @@ -493,7 +490,7 @@ def test_get_handoff_config_returns_none_when_not_root_cause_step(self, mock_get result = AutofixOnCompletionHook._get_handoff_config_if_applicable( stopping_point=AutofixStoppingPoint.CODE_CHANGES, current_step=AutofixStep.SOLUTION, # Not ROOT_CAUSE - group_id=self.group.id, + group=self.group, ) assert result is None @@ -505,7 +502,7 @@ def test_get_handoff_config_returns_none_when_stopping_at_root_cause(self, mock_ result = AutofixOnCompletionHook._get_handoff_config_if_applicable( stopping_point=AutofixStoppingPoint.ROOT_CAUSE, current_step=AutofixStep.ROOT_CAUSE, - group_id=self.group.id, + group=self.group, ) assert result is None @@ -519,7 +516,7 @@ def test_get_handoff_config_returns_none_when_no_handoff_configured(self, mock_g result = AutofixOnCompletionHook._get_handoff_config_if_applicable( stopping_point=AutofixStoppingPoint.CODE_CHANGES, current_step=AutofixStep.ROOT_CAUSE, - group_id=self.group.id, + group=self.group, ) assert result is None @@ -533,7 +530,7 @@ def test_get_handoff_config_returns_config_when_applicable(self, mock_get_prefs) result = AutofixOnCompletionHook._get_handoff_config_if_applicable( stopping_point=AutofixStoppingPoint.CODE_CHANGES, current_step=AutofixStep.ROOT_CAUSE, - group_id=self.group.id, + group=self.group, ) assert result == handoff_config @@ -572,7 +569,7 @@ def test_trigger_coding_agent_handoff_calls_function(self, mock_trigger): AutofixOnCompletionHook._trigger_coding_agent_handoff( organization=self.organization, run_id=123, - group_id=self.group.id, + group=self.group, handoff_config=handoff_config, ) diff --git a/tests/sentry/seer/endpoints/test_group_ai_autofix.py b/tests/sentry/seer/endpoints/test_group_ai_autofix.py index aa9d4f008228bc..1a04e857298387 100644 --- a/tests/sentry/seer/endpoints/test_group_ai_autofix.py +++ b/tests/sentry/seer/endpoints/test_group_ai_autofix.py @@ -5,6 +5,7 @@ from sentry.seer.autofix.autofix_agent import AutofixStep from sentry.seer.autofix.constants import AutofixReferrer, AutofixStatus from sentry.seer.autofix.utils import AutofixState, AutofixStoppingPoint, CodebaseState +from sentry.seer.explorer.client_models import SeerRunState from sentry.testutils.cases import APITestCase, SnubaTestCase from sentry.testutils.helpers.datetime import before_now from sentry.testutils.helpers.features import with_feature @@ -992,6 +993,92 @@ def test_post_coding_agent_handoff_errors_with_both_provider_and_integration_id( assert response.status_code == 400, f"Failed for {flag}: {response.data}" assert response.data["detail"] == "Cannot specify both integration_id and provider" + @patch("sentry.seer.explorer.client_utils.make_explorer_state_request") + @patch("sentry.seer.explorer.client.make_explorer_update_request") + def test_open_pr(self, mock_explorer_update_request, mock_explorer_state_request): + self.login_as(user=self.user) + group = self.create_group() + + mock_explorer_update_response = Mock() + mock_explorer_update_response.status = 200 + mock_explorer_update_request.return_value = mock_explorer_update_response + + mock_explorer_state_response = Mock() + mock_explorer_state_response.status = 200 + mock_explorer_state_response.json = Mock( + return_value={ + "session": SeerRunState( + run_id=123, + blocks=[], + status="completed", + updated_at="2023-07-18T12:00:00Z", + metadata={"group_id": group.id}, + ).dict() + } + ) + mock_explorer_state_request.return_value = mock_explorer_state_response + + for flag in EXPLORER_FLAGS: + with self.feature(flag): + response = self.client.post( + self._get_url(group.id, mode="explorer"), + data={ + "step": "open_pr", + "run_id": 123, + }, + format="json", + ) + + assert response.status_code == 202, f"Failed for {flag}: {response.data}" + assert response.data == {"run_id": 123} + + def test_open_pr_no_run_id(self): + self.login_as(user=self.user) + + for flag in EXPLORER_FLAGS: + group = self.create_group() + with self.feature(flag): + response = self.client.post( + self._get_url(group.id, mode="explorer"), + data={"step": "open_pr"}, + format="json", + ) + + assert response.status_code == 400, f"Failed for {flag}: {response.data}" + assert response.data["detail"] == "run_id is required for open_pr" + + @patch("sentry.seer.explorer.client_utils.make_explorer_state_request") + def test_open_pr_permission_error(self, mock_explorer_state_request): + self.login_as(user=self.user) + group = self.create_group() + + mock_explorer_state_response = Mock() + mock_explorer_state_response.status = 200 + mock_explorer_state_response.json = Mock( + return_value={ + "session": SeerRunState( + run_id=123, + blocks=[], + status="completed", + updated_at="2023-07-18T12:00:00Z", + ).dict() + } + ) + mock_explorer_state_request.return_value = mock_explorer_state_response + + for flag in EXPLORER_FLAGS: + with self.feature(flag): + response = self.client.post( + self._get_url(group.id, mode="explorer"), + data={ + "step": "open_pr", + "run_id": 123, + }, + format="json", + ) + + assert response.status_code == 404, f"Failed for {flag}: {response.data}" + @with_feature("organizations:gen-ai-features") @with_feature("organizations:seer-explorer") From 20b0021c5f20348ee877b44314b75ebe1d7e4168 Mon Sep 17 00:00:00 2001 From: Mihir-Mavalankar Date: Fri, 27 Mar 2026 09:28:51 -0700 Subject: [PATCH 04/30] fix(seer-explorer): Keep optimistic thinking block until assistant responds (#111685) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## PR Summary + Bug reproduction steps: + Open the Explorer chat panel with context engine + Type a message and send it + Watch the chat area — the "Thinking" block appears for a split second, then disappears + For the next 2-3 seconds, only the grey user message bubble is visible with no activity indicator + Eventually the real assistant response appears + **Bug root cause:** When a user sends a message, the frontend shows an optimistic "Thinking..." assistant block immediately. The backend acknowledges the user message synchronously and returns, then enqueues a Celery task to run the actual agent. The frontend polls for session updates and detects the server signature has changed (the user block now exists server-side), which triggers the optimistic clearing logic. But at this point the Celery worker hasn't produced an assistant block yet — so the "Thinking" block disappears and the UI shows just the grey user message with no activity indicator for 2-3 seconds until the worker responds. + **It's there on regular explorer too but it's worse with context engine:** The Celery worker runs context retrieval synchronously before starting the main explorer agent. With context engine enabled, this includes an additional LLM call (via domain_context stage) on top of Sentry docs retrieval and org-project embedding lookups. This adds 2-3 extra seconds of processing before any assistant block is produced, making the "dead" UI gap much more noticeable. + **Fix**: Instead of clearing optimistic state on any signature change, the effect now checks whether the server actually has an assistant response block at or after the insert index. The "Thinking" block persists until either:A real assistant block appears in the polled data, or A 30-second safety timeout expires (in case the Celery worker fails entirely) --------- Co-authored-by: Claude Opus --- .../hooks/useSeerExplorer.spec.tsx | 41 +++++++++++++- .../seerExplorer/hooks/useSeerExplorer.tsx | 53 +++++++++---------- 2 files changed, 66 insertions(+), 28 deletions(-) diff --git a/static/app/views/seerExplorer/hooks/useSeerExplorer.spec.tsx b/static/app/views/seerExplorer/hooks/useSeerExplorer.spec.tsx index d49fbf08eb5432..b48377fb76a0a0 100644 --- a/static/app/views/seerExplorer/hooks/useSeerExplorer.spec.tsx +++ b/static/app/views/seerExplorer/hooks/useSeerExplorer.spec.tsx @@ -1,6 +1,6 @@ import {OrganizationFixture} from 'sentry-fixture/organization'; -import {act, renderHookWithProviders} from 'sentry-test/reactTestingLibrary'; +import {act, renderHookWithProviders, waitFor} from 'sentry-test/reactTestingLibrary'; import {useSeerExplorer} from './useSeerExplorer'; @@ -184,4 +184,43 @@ describe('useSeerExplorer', () => { expect(result.current.isPolling).toBe(false); }); }); + + describe('Optimistic Thinking Block', () => { + it('persists thinking block when server has no assistant response yet', async () => { + const chatUrl = `/organizations/${organization.slug}/seer/explorer-chat/`; + + MockApiClient.addMockResponse({url: chatUrl, method: 'GET', body: {session: null}}); + MockApiClient.addMockResponse({url: chatUrl, method: 'POST', body: {run_id: 456}}); + MockApiClient.addMockResponse({ + url: `${chatUrl}456/`, + method: 'GET', + body: { + session: { + blocks: [ + { + id: 'user-1', + message: {role: 'user', content: 'Test'}, + timestamp: '2024-01-01T00:00:00Z', + loading: false, + }, + ], + run_id: 456, + status: 'processing', + updated_at: '2024-01-01T00:00:00Z', + }, + }, + }); + + const {result} = renderHookWithProviders(() => useSeerExplorer(), {organization}); + + await act(async () => { + await result.current.sendMessage('Test'); + }); + + await waitFor(() => (result.current.sessionData?.blocks ?? []).length > 0); + + const blocks = result.current.sessionData?.blocks ?? []; + expect(blocks.some(b => b.message.role === 'assistant' && b.loading)).toBe(true); + }); + }); }); diff --git a/static/app/views/seerExplorer/hooks/useSeerExplorer.tsx b/static/app/views/seerExplorer/hooks/useSeerExplorer.tsx index a28507d40b64ee..bf4200a326c6fa 100644 --- a/static/app/views/seerExplorer/hooks/useSeerExplorer.tsx +++ b/static/app/views/seerExplorer/hooks/useSeerExplorer.tsx @@ -148,7 +148,6 @@ export const useSeerExplorer = () => { const [optimistic, setOptimistic] = useState<{ assistantBlockId: string; assistantContent: string; - baselineSignature: string; insertIndex: number; userBlockId: string; userQuery: string; @@ -209,16 +208,6 @@ export const useSeerExplorer = () => { deletedFromIndex ?? (apiData?.session?.blocks.length || 0); const calculatedInsertIndex = insertIndex ?? effectiveMessageLength; - // Record current real blocks signature to know when to clear optimistic UI - const baselineSignature = JSON.stringify( - (apiData?.session?.blocks || []).map(b => [ - b.id, - b.message.role, - b.message.content, - !!b.loading, - ]) - ); - // Generate deterministic block IDs matching backend logic // Backend generates: `{prefix}-{index}-{content[:16].replace(' ', '-')}` const generateBlockId = (prefix: string, content: string, index: number) => { @@ -235,7 +224,6 @@ export const useSeerExplorer = () => { setOptimistic({ insertIndex: calculatedInsertIndex, userQuery: query, - baselineSignature, userBlockId: generateBlockId('user', query, calculatedInsertIndex), assistantBlockId: generateBlockId( 'loading', @@ -455,23 +443,34 @@ export const useSeerExplorer = () => { return sessionData; }, [sessionData, deletedFromIndex, optimistic, runId]); - // Clear optimistic blocks once the real blocks change in poll results + // Clear optimistic blocks once the server has persisted the user message + // and produced a real assistant response after the insert point. useEffect(() => { - if (optimistic) { - const currentSignature = JSON.stringify( - (apiData?.session?.blocks || []).map(b => [ - b.id, - b.message.role, - b.message.content, - !!b.loading, - ]) - ); - if (currentSignature !== optimistic.baselineSignature) { - setOptimistic(null); - // Reveal all real blocks immediately after the server responds - setDeletedFromIndex(null); - } + if (!optimistic) { + return undefined; + } + + const serverBlocks = apiData?.session?.blocks || []; + const blockAtInsert = serverBlocks[optimistic.insertIndex]; + + const serverHasUserBlock = + blockAtInsert?.message.role === 'user' && + blockAtInsert?.message.content === optimistic.userQuery; + + if (!serverHasUserBlock) { + return undefined; + } + + const hasAssistantResponse = serverBlocks + .slice(optimistic.insertIndex + 1) + .some(b => b.message.role === 'assistant'); + + if (hasAssistantResponse) { + setOptimistic(null); + setDeletedFromIndex(null); } + + return undefined; }, [apiData?.session?.blocks, optimistic]); // Detect PR creation errors and show error messages From 5a8400b91c99fe2825e5e9bbd6ddff69ab0b9bb5 Mon Sep 17 00:00:00 2001 From: Colton Allen Date: Fri, 27 Mar 2026 11:41:19 -0500 Subject: [PATCH 05/30] ref(scm): Wrap raw response with data key and provide the headers (#111715) This is a forward compatibility step. By wrapping the raw response with the data key we can add more keys later to communicate more information (if needed) without breaking existing callers. I decided to add the headers to the raw response for completeness. --- src/sentry/scm/private/providers/github.py | 8 +- src/sentry/scm/private/providers/gitlab.py | 8 +- src/sentry/scm/types.py | 11 +- tests/sentry/scm/test_fixtures.py | 78 +- tests/sentry/scm/unit/test_github_provider.py | 45 +- tests/sentry/scm/unit/test_gitlab_provider.py | 12257 ++++++++-------- 6 files changed, 6268 insertions(+), 6139 deletions(-) diff --git a/src/sentry/scm/private/providers/github.py b/src/sentry/scm/private/providers/github.py index 77380ee3464550..9d0f12372ce26e 100644 --- a/src/sentry/scm/private/providers/github.py +++ b/src/sentry/scm/private/providers/github.py @@ -712,7 +712,7 @@ def get_pull_request_diff( return { "data": response.text, "type": "github", - "raw": response.text, + "raw": {"data": response.text, "headers": dict(response.headers)}, "meta": _extract_response_meta(response), } @@ -933,7 +933,7 @@ def get_archive_link( return { "data": ArchiveLink(url=response.headers["Location"], headers={}), "type": "github", - "raw": response.headers["Location"], + "raw": {"data": response.headers["Location"], "headers": dict(response.headers)}, "meta": _extract_response_meta(response), } @@ -1125,7 +1125,7 @@ def map_action[T]( return { "data": fn(raw), "type": "github", - "raw": raw, + "raw": {"data": raw, "headers": dict(response.headers)}, "meta": _extract_response_meta(response), } @@ -1143,6 +1143,6 @@ def map_paginated_action[T]( return { "data": fn(raw), "type": "github", - "raw": raw, + "raw": {"data": raw, "headers": dict(response.headers)}, "meta": meta, } diff --git a/src/sentry/scm/private/providers/gitlab.py b/src/sentry/scm/private/providers/gitlab.py index 8cafc47eeb070f..4049057177ea39 100644 --- a/src/sentry/scm/private/providers/gitlab.py +++ b/src/sentry/scm/private/providers/gitlab.py @@ -354,7 +354,7 @@ def get_tree( truncated=False, ), type="gitlab", - raw=raw, + raw={"data": raw, "headers": None}, meta={}, ) @@ -390,7 +390,7 @@ def get_archive_link( return ActionResult( data=data, type="gitlab", - raw=url, + raw={"data": url, "headers": None}, meta={}, ) @@ -597,7 +597,7 @@ def make_paginated_result[T]( return PaginatedActionResult( data=[map_item(item) for item in raw_items], type="gitlab", - raw=raw, + raw={"data": raw, "headers": None}, # No actual pagination for now meta=PaginatedResponseMeta(next_cursor=None), ) @@ -615,7 +615,7 @@ def make_result[T]( return ActionResult( data=map_item(raw_item), type="gitlab", - raw=raw, + raw={"data": raw, "headers": None}, meta={}, ) diff --git a/src/sentry/scm/types.py b/src/sentry/scm/types.py index d16c3b899b52b9..3cf9c60df6640d 100644 --- a/src/sentry/scm/types.py +++ b/src/sentry/scm/types.py @@ -1,6 +1,6 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Literal, Protocol, Required, TypedDict, runtime_checkable +from typing import Any, Literal, MutableMapping, Protocol, Required, TypedDict, runtime_checkable type Action = Literal["check_run", "comment", "pull_request"] type EventType = "CheckRunEvent" | "CommentEvent" | "PullRequestEvent" @@ -217,6 +217,11 @@ class PullRequest(TypedDict): base: PullRequestBranch +class RawResult(TypedDict): + headers: MutableMapping[str, str] | None + data: Any + + class ActionResult[T](TypedDict): """Wraps a provider response with metadata and the original API payload. @@ -230,7 +235,7 @@ class ActionResult[T](TypedDict): data: T type: ProviderName - raw: Any + raw: RawResult meta: ResponseMeta @@ -244,7 +249,7 @@ class PaginatedActionResult[T](TypedDict): data: list[T] type: ProviderName - raw: Any + raw: RawResult meta: PaginatedResponseMeta diff --git a/tests/sentry/scm/test_fixtures.py b/tests/sentry/scm/test_fixtures.py index 191632a30daf90..4054aec3ce9b0a 100644 --- a/tests/sentry/scm/test_fixtures.py +++ b/tests/sentry/scm/test_fixtures.py @@ -496,7 +496,7 @@ def get_pull_request( base=PullRequestBranch(sha=raw["base"]["sha"], ref=raw["base"]["ref"]), ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -517,7 +517,7 @@ def get_issue_comments( ), ], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -525,7 +525,7 @@ def create_issue_comment(self, issue_id: str, body: str) -> ActionResult[Comment return ActionResult( data=Comment(id="101", body=body, author=None), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -549,7 +549,7 @@ def get_pull_request_comments( ), ], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -557,7 +557,7 @@ def create_pull_request_comment(self, pull_request_id: str, body: str) -> Action return ActionResult( data=Comment(id="201", body=body, author=None), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -579,7 +579,7 @@ def get_issue_comment_reactions( ReactionResult(id="2", content="eyes", author={"id": "2", "username": "otheruser"}), ], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -589,7 +589,7 @@ def create_issue_comment_reaction( return ActionResult( data=ReactionResult(id="1", content=reaction, author=None), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -617,7 +617,7 @@ def get_pull_request_comment_reactions( ), ], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -627,7 +627,7 @@ def create_pull_request_comment_reaction( return ActionResult( data=ReactionResult(id="1", content=reaction, author=None), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -652,7 +652,7 @@ def get_issue_reactions( ), ], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -662,7 +662,7 @@ def create_issue_reaction( return ActionResult( data=ReactionResult(id="1", content=reaction, author=None), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -685,7 +685,7 @@ def get_pull_request_reactions( ), ], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -695,7 +695,7 @@ def create_pull_request_reaction( return ActionResult( data=ReactionResult(id="1", content=reaction, author=None), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -712,7 +712,7 @@ def get_branch( return ActionResult( data=GitRef(ref=f"refs/heads/{branch}", sha="abc123def456"), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -720,7 +720,7 @@ def create_branch(self, branch: str, sha: str) -> ActionResult[GitRef]: return ActionResult( data=GitRef(ref=branch, sha=sha), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -728,7 +728,7 @@ def update_branch(self, branch: str, sha: str, force: bool = False) -> ActionRes return ActionResult( data=GitRef(ref=branch, sha=sha), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -738,7 +738,7 @@ def create_git_blob(self, content: str, encoding: str) -> ActionResult[GitBlob]: return ActionResult( data=GitBlob(sha="blob123abc"), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -759,7 +759,7 @@ def get_file_content( size=11, ), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -782,7 +782,7 @@ def get_commit( files=[CommitFile(filename="src/main.py", status="modified", patch="@@ -1 +1 @@")], ), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -796,7 +796,7 @@ def get_commits( return PaginatedActionResult( data=[inner["data"]], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -811,7 +811,7 @@ def get_commits_by_path( return PaginatedActionResult( data=[inner["data"]], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -826,7 +826,7 @@ def compare_commits( return PaginatedActionResult( data=[inner["data"]], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -849,7 +849,7 @@ def get_tree( truncated=False, ), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -865,7 +865,7 @@ def get_git_commit( message="Initial commit", ), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -885,7 +885,7 @@ def create_git_tree( truncated=False, ), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -902,7 +902,7 @@ def create_git_commit( message=message, ), type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -926,7 +926,7 @@ def get_pull_request_files( ), ], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -949,7 +949,7 @@ def get_pull_request_commits( ), ], type="github", - raw={}, + raw={"headers": None, "data": None}, meta=_DEFAULT_PAGINATED_META, ) @@ -961,7 +961,7 @@ def get_pull_request_diff( return ActionResult( data="diff --git a/file.py b/file.py\n--- a/file.py\n+++ b/file.py\n@@ -1 +1 @@\n-old\n+new", type="github", - raw={}, + raw={"headers": None, "data": None}, meta={}, ) @@ -988,7 +988,7 @@ def get_pull_requests( ), ], type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta=_DEFAULT_PAGINATED_META, ) @@ -1013,7 +1013,7 @@ def create_pull_request( base=PullRequestBranch(sha=raw["base"]["sha"], ref=raw["base"]["ref"]), ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -1038,7 +1038,7 @@ def create_pull_request_draft( base=PullRequestBranch(sha=raw["base"]["sha"], ref=raw["base"]["ref"]), ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -1067,7 +1067,7 @@ def update_pull_request( base=PullRequestBranch(sha=raw["base"]["sha"], ref=raw["base"]["ref"]), ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -1093,7 +1093,7 @@ def create_review_comment_file( body=raw["body"], ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -1112,7 +1112,7 @@ def create_review_comment_reply( body=raw["body"], ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -1128,7 +1128,7 @@ def create_review( return ActionResult( data=Review(id=str(raw["id"]), html_url=raw["html_url"]), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -1155,7 +1155,7 @@ def create_check_run( html_url=raw["html_url"], ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -1174,7 +1174,7 @@ def get_check_run( html_url=raw["html_url"], ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) @@ -1198,7 +1198,7 @@ def update_check_run( html_url=raw["html_url"], ), type="github", - raw=raw, + raw={"headers": None, "data": raw}, meta={}, ) diff --git a/tests/sentry/scm/unit/test_github_provider.py b/tests/sentry/scm/unit/test_github_provider.py index cdb3212d859846..74069d1f916c2e 100644 --- a/tests/sentry/scm/unit/test_github_provider.py +++ b/tests/sentry/scm/unit/test_github_provider.py @@ -178,26 +178,6 @@ def make_provider(client: RecordingClient | None = None) -> tuple[GitHubProvider return provider, transport -def assert_action_result(result: Any, *, expected_data: Any, raw: Any) -> None: - assert result["type"] == "github" - assert result["raw"] == raw - assert result["data"] == expected_data - assert result["meta"] == {} - - -def assert_paginated_result( - result: Any, - *, - expected_data: Any, - raw: Any, - next_cursor: str, -) -> None: - assert result["type"] == "github" - assert result["raw"] == raw - assert result["data"] == expected_data - assert result["meta"] == {"next_cursor": next_cursor} - - def expected_comment(raw: dict[str, Any]) -> dict[str, Any]: return { "id": str(raw["id"]), @@ -857,12 +837,11 @@ def test_paginated_methods(case: dict[str, Any]) -> None: result = getattr(provider, case["name"])(**case["kwargs"]) - assert_paginated_result( - result, - expected_data=case["expected_data"], - raw=case["raw"], - next_cursor=case["next_cursor"], - ) + assert result["type"] == "github" + assert result["raw"] == {"data": case["raw"], "headers": {}} + assert result["data"] == case["expected_data"] + assert result["meta"] == {"next_cursor": case["next_cursor"]} + assert client.calls == [ { "operation": "get", @@ -885,7 +864,11 @@ def test_action_methods(case: dict[str, Any]) -> None: result = getattr(provider, case["name"])(**case["kwargs"]) - assert_action_result(result, expected_data=case["expected_data"], raw=case["raw"]) + assert result["type"] == "github" + assert result["raw"] == {"data": case["raw"], "headers": case.get("headers", {})} + assert result["data"] == case["expected_data"] + assert result["meta"] == {} + expected_call = {"operation": case["operation"], "path": case["path"]} if "data" in case: expected_call["data"] = case["data"] @@ -916,7 +899,13 @@ def test_get_pull_request_diff_uses_raw_request_and_extracts_meta() -> None: result = provider.get_pull_request_diff("42") assert result["type"] == "github" - assert result["raw"] == "diff --git a/f.py b/f.py" + assert result["raw"] == { + "data": "diff --git a/f.py b/f.py", + "headers": { + "ETag": '"etag-123"', + "Last-Modified": "Tue, 04 Feb 2026 10:00:00 GMT", + }, + } assert result["data"] == "diff --git a/f.py b/f.py" assert result["meta"]["etag"] == '"etag-123"' assert result["meta"]["last_modified"].isoformat() == "2026-02-04T10:00:00+00:00" diff --git a/tests/sentry/scm/unit/test_gitlab_provider.py b/tests/sentry/scm/unit/test_gitlab_provider.py index 3edf4dfb3297b2..b1ad8fe72f2280 100644 --- a/tests/sentry/scm/unit/test_gitlab_provider.py +++ b/tests/sentry/scm/unit/test_gitlab_provider.py @@ -156,8 +156,94 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { + "raw": { + "data": [ + { + "id": 459277081, + "iid": 1, + "project_id": 79787061, + "title": "Add blah", + "description": "", + "state": "opened", + "created_at": "2026-02-26T08:48:23.151Z", + "updated_at": "2026-03-11T10:54:27.749Z", + "merged_by": None, + "merge_user": None, + "merged_at": None, + "closed_by": None, + "closed_at": None, + "target_branch": "main", + "source_branch": "topics/blah", + "user_notes_count": 47, + "upvotes": 0, + "downvotes": 1, + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "assignees": [], + "assignee": None, + "reviewers": [], + "source_project_id": 79787061, + "target_project_id": 79787061, + "labels": [], + "draft": False, + "imported": False, + "imported_from": "none", + "work_in_progress": False, + "milestone": None, + "merge_when_pipeline_succeeds": False, + "merge_status": "can_be_merged", + "detailed_merge_status": "mergeable", + "merge_after": None, + "sha": "7497e018d01503b6abc3053b7896266115e631f6", + "merge_commit_sha": None, + "squash_commit_sha": None, + "discussion_locked": None, + "should_remove_source_branch": None, + "force_remove_source_branch": True, + "prepared_at": "2026-02-26T08:48:30.331Z", + "reference": "!1", + "references": { + "short": "!1", + "relative": "!1", + "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!1", + }, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/1", + "time_stats": { + "time_estimate": 0, + "total_time_spent": 0, + "human_time_estimate": None, + "human_total_time_spent": None, + }, + "squash": False, + "squash_on_merge": False, + "task_completion_status": {"count": 0, "completed_count": 0}, + "has_conflicts": False, + "blocking_discussions_resolved": True, + "approvals_before_merge": None, + } + ], + "headers": None, + }, + "meta": {"next_cursor": None}, + }, + ), + ForwardToClientTest( + provider_method=GitLabProvider.get_pull_request, + provider_args={"pull_request_id": "1", "request_options": None}, + client_calls=[ + ClientForwardedCall( + client_method="get_merge_request", + client_args=("79787061", "1"), + client_kwds={}, + client_return_value={ "id": 459277081, "iid": 1, "project_id": 79787061, @@ -173,7 +259,7 @@ class ForwardToClientTest(NamedTuple): "closed_at": None, "target_branch": "main", "source_branch": "topics/blah", - "user_notes_count": 47, + "user_notes_count": 46, "upvotes": 0, "downvotes": 1, "author": { @@ -227,20 +313,42 @@ class ForwardToClientTest(NamedTuple): "has_conflicts": False, "blocking_discussions_resolved": True, "approvals_before_merge": None, - } - ], - "meta": {"next_cursor": None}, - }, - ), - ForwardToClientTest( - provider_method=GitLabProvider.get_pull_request, - provider_args={"pull_request_id": "1", "request_options": None}, - client_calls=[ - ClientForwardedCall( - client_method="get_merge_request", - client_args=("79787061", "1"), - client_kwds={}, - client_return_value={ + "subscribed": True, + "changes_count": "1", + "latest_build_started_at": None, + "latest_build_finished_at": None, + "first_deployed_to_production_at": None, + "pipeline": None, + "head_pipeline": None, + "diff_refs": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + }, + "merge_error": None, + "first_contribution": True, + "user": {"can_merge": True}, + }, + ), + ], + provider_return_value={ + "data": { + "id": "459277081", + "number": "1", + "title": "Add blah", + "body": None, + "state": "open", + "merged": False, + "html_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/1", + "head": { + "sha": "7497e018d01503b6abc3053b7896266115e631f6", + "ref": "topics/blah", + }, + "base": {"sha": None, "ref": "main"}, + }, + "type": "gitlab", + "raw": { + "data": { "id": 459277081, "iid": 1, "project_id": 79787061, @@ -326,109 +434,7 @@ class ForwardToClientTest(NamedTuple): "first_contribution": True, "user": {"can_merge": True}, }, - ), - ], - provider_return_value={ - "data": { - "id": "459277081", - "number": "1", - "title": "Add blah", - "body": None, - "state": "open", - "merged": False, - "html_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/1", - "head": { - "sha": "7497e018d01503b6abc3053b7896266115e631f6", - "ref": "topics/blah", - }, - "base": {"sha": None, "ref": "main"}, - }, - "type": "gitlab", - "raw": { - "id": 459277081, - "iid": 1, - "project_id": 79787061, - "title": "Add blah", - "description": "", - "state": "opened", - "created_at": "2026-02-26T08:48:23.151Z", - "updated_at": "2026-03-11T10:54:27.749Z", - "merged_by": None, - "merge_user": None, - "merged_at": None, - "closed_by": None, - "closed_at": None, - "target_branch": "main", - "source_branch": "topics/blah", - "user_notes_count": 46, - "upvotes": 0, - "downvotes": 1, - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "assignees": [], - "assignee": None, - "reviewers": [], - "source_project_id": 79787061, - "target_project_id": 79787061, - "labels": [], - "draft": False, - "imported": False, - "imported_from": "none", - "work_in_progress": False, - "milestone": None, - "merge_when_pipeline_succeeds": False, - "merge_status": "can_be_merged", - "detailed_merge_status": "mergeable", - "merge_after": None, - "sha": "7497e018d01503b6abc3053b7896266115e631f6", - "merge_commit_sha": None, - "squash_commit_sha": None, - "discussion_locked": None, - "should_remove_source_branch": None, - "force_remove_source_branch": True, - "prepared_at": "2026-02-26T08:48:30.331Z", - "reference": "!1", - "references": { - "short": "!1", - "relative": "!1", - "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!1", - }, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/1", - "time_stats": { - "time_estimate": 0, - "total_time_spent": 0, - "human_time_estimate": None, - "human_total_time_spent": None, - }, - "squash": False, - "squash_on_merge": False, - "task_completion_status": {"count": 0, "completed_count": 0}, - "has_conflicts": False, - "blocking_discussions_resolved": True, - "approvals_before_merge": None, - "subscribed": True, - "changes_count": "1", - "latest_build_started_at": None, - "latest_build_finished_at": None, - "first_deployed_to_production_at": None, - "pipeline": None, - "head_pipeline": None, - "diff_refs": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - }, - "merge_error": None, - "first_contribution": True, - "user": {"can_merge": True}, + "headers": None, }, "meta": {}, }, @@ -554,85 +560,88 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": 463099183, - "iid": 26, - "project_id": 79787061, - "title": "PR from API 2026-03-11 11:01:25.358068", - "description": "Another PR, made through the API.", - "state": "opened", - "created_at": "2026-03-11T11:01:25.811Z", - "updated_at": "2026-03-11T11:01:25.811Z", - "merged_by": None, - "merge_user": None, - "merged_at": None, - "closed_by": None, - "closed_at": None, - "target_branch": "main", - "source_branch": "topics/blih", - "user_notes_count": 0, - "upvotes": 0, - "downvotes": 0, - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "assignees": [], - "assignee": None, - "reviewers": [], - "source_project_id": 79787061, - "target_project_id": 79787061, - "labels": [], - "draft": False, - "imported": False, - "imported_from": "none", - "work_in_progress": False, - "milestone": None, - "merge_when_pipeline_succeeds": False, - "merge_status": "checking", - "detailed_merge_status": "preparing", - "merge_after": None, - "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "merge_commit_sha": None, - "squash_commit_sha": None, - "discussion_locked": None, - "should_remove_source_branch": None, - "force_remove_source_branch": True, - "prepared_at": None, - "reference": "!26", - "references": { - "short": "!26", - "relative": "!26", - "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!26", - }, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/26", - "time_stats": { - "time_estimate": 0, - "total_time_spent": 0, - "human_time_estimate": None, - "human_total_time_spent": None, + "data": { + "id": 463099183, + "iid": 26, + "project_id": 79787061, + "title": "PR from API 2026-03-11 11:01:25.358068", + "description": "Another PR, made through the API.", + "state": "opened", + "created_at": "2026-03-11T11:01:25.811Z", + "updated_at": "2026-03-11T11:01:25.811Z", + "merged_by": None, + "merge_user": None, + "merged_at": None, + "closed_by": None, + "closed_at": None, + "target_branch": "main", + "source_branch": "topics/blih", + "user_notes_count": 0, + "upvotes": 0, + "downvotes": 0, + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "assignees": [], + "assignee": None, + "reviewers": [], + "source_project_id": 79787061, + "target_project_id": 79787061, + "labels": [], + "draft": False, + "imported": False, + "imported_from": "none", + "work_in_progress": False, + "milestone": None, + "merge_when_pipeline_succeeds": False, + "merge_status": "checking", + "detailed_merge_status": "preparing", + "merge_after": None, + "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "merge_commit_sha": None, + "squash_commit_sha": None, + "discussion_locked": None, + "should_remove_source_branch": None, + "force_remove_source_branch": True, + "prepared_at": None, + "reference": "!26", + "references": { + "short": "!26", + "relative": "!26", + "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!26", + }, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/26", + "time_stats": { + "time_estimate": 0, + "total_time_spent": 0, + "human_time_estimate": None, + "human_total_time_spent": None, + }, + "squash": False, + "squash_on_merge": False, + "task_completion_status": {"count": 0, "completed_count": 0}, + "has_conflicts": False, + "blocking_discussions_resolved": True, + "approvals_before_merge": None, + "subscribed": True, + "changes_count": None, + "latest_build_started_at": None, + "latest_build_finished_at": None, + "first_deployed_to_production_at": None, + "pipeline": None, + "head_pipeline": None, + "diff_refs": None, + "merge_error": None, + "user": {"can_merge": True}, }, - "squash": False, - "squash_on_merge": False, - "task_completion_status": {"count": 0, "completed_count": 0}, - "has_conflicts": False, - "blocking_discussions_resolved": True, - "approvals_before_merge": None, - "subscribed": True, - "changes_count": None, - "latest_build_started_at": None, - "latest_build_finished_at": None, - "first_deployed_to_production_at": None, - "pipeline": None, - "head_pipeline": None, - "diff_refs": None, - "merge_error": None, - "user": {"can_merge": True}, + "headers": None, }, "meta": {}, }, @@ -828,21 +837,187 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 463099183, - "iid": 26, - "project_id": 79787061, - "title": "PR from API 2026-03-11 11:01:25.358068", - "description": "Another PR, made through the API.", - "state": "opened", - "created_at": "2026-03-11T11:01:25.811Z", - "updated_at": "2026-03-11T11:01:27.021Z", - "merged_by": None, + "raw": { + "data": [ + { + "id": 463099183, + "iid": 26, + "project_id": 79787061, + "title": "PR from API 2026-03-11 11:01:25.358068", + "description": "Another PR, made through the API.", + "state": "opened", + "created_at": "2026-03-11T11:01:25.811Z", + "updated_at": "2026-03-11T11:01:27.021Z", + "merged_by": None, + "merge_user": None, + "merged_at": None, + "closed_by": None, + "closed_at": None, + "target_branch": "main", + "source_branch": "topics/blih", + "user_notes_count": 0, + "upvotes": 0, + "downvotes": 0, + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "assignees": [], + "assignee": None, + "reviewers": [], + "source_project_id": 79787061, + "target_project_id": 79787061, + "labels": [], + "draft": False, + "imported": False, + "imported_from": "none", + "work_in_progress": False, + "milestone": None, + "merge_when_pipeline_succeeds": False, + "merge_status": "can_be_merged", + "detailed_merge_status": "mergeable", + "merge_after": None, + "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "merge_commit_sha": None, + "squash_commit_sha": None, + "discussion_locked": None, + "should_remove_source_branch": None, + "force_remove_source_branch": True, + "prepared_at": "2026-03-11T11:01:27.014Z", + "reference": "!26", + "references": { + "short": "!26", + "relative": "!26", + "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!26", + }, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/26", + "time_stats": { + "time_estimate": 0, + "total_time_spent": 0, + "human_time_estimate": None, + "human_total_time_spent": None, + }, + "squash": False, + "squash_on_merge": False, + "task_completion_status": {"count": 0, "completed_count": 0}, + "has_conflicts": False, + "blocking_discussions_resolved": True, + "approvals_before_merge": None, + }, + { + "id": 459277081, + "iid": 1, + "project_id": 79787061, + "title": "Add blah", + "description": "", + "state": "opened", + "created_at": "2026-02-26T08:48:23.151Z", + "updated_at": "2026-03-11T10:54:27.749Z", + "merged_by": None, + "merge_user": None, + "merged_at": None, + "closed_by": None, + "closed_at": None, + "target_branch": "main", + "source_branch": "topics/blah", + "user_notes_count": 47, + "upvotes": 0, + "downvotes": 1, + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "assignees": [], + "assignee": None, + "reviewers": [], + "source_project_id": 79787061, + "target_project_id": 79787061, + "labels": [], + "draft": False, + "imported": False, + "imported_from": "none", + "work_in_progress": False, + "milestone": None, + "merge_when_pipeline_succeeds": False, + "merge_status": "can_be_merged", + "detailed_merge_status": "mergeable", + "merge_after": None, + "sha": "7497e018d01503b6abc3053b7896266115e631f6", + "merge_commit_sha": None, + "squash_commit_sha": None, + "discussion_locked": None, + "should_remove_source_branch": None, + "force_remove_source_branch": True, + "prepared_at": "2026-02-26T08:48:30.331Z", + "reference": "!1", + "references": { + "short": "!1", + "relative": "!1", + "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!1", + }, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/1", + "time_stats": { + "time_estimate": 0, + "total_time_spent": 0, + "human_time_estimate": None, + "human_total_time_spent": None, + }, + "squash": False, + "squash_on_merge": False, + "task_completion_status": {"count": 0, "completed_count": 0}, + "has_conflicts": False, + "blocking_discussions_resolved": True, + "approvals_before_merge": None, + }, + ], + "headers": None, + }, + "meta": {"next_cursor": None}, + }, + ), + ForwardToClientTest( + provider_method=GitLabProvider.update_pull_request, + provider_args={"pull_request_id": "26", "title": None, "body": None, "state": "closed"}, + client_calls=[ + ClientForwardedCall( + client_method="update_merge_request", + client_args=("79787061", "26", {"state_event": "close"}), + client_kwds={}, + client_return_value={ + "id": 463099183, + "iid": 26, + "project_id": 79787061, + "title": "PR from API 2026-03-11 11:01:25.358068", + "description": "Another PR, made through the API.", + "state": "closed", + "created_at": "2026-03-11T11:01:25.811Z", + "updated_at": "2026-03-11T11:01:36.336Z", + "merged_by": None, "merge_user": None, "merged_at": None, - "closed_by": None, - "closed_at": None, + "closed_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "closed_at": "2026-03-11T11:01:36.166Z", "target_branch": "main", "source_branch": "topics/blih", "user_notes_count": 0, @@ -871,7 +1046,7 @@ class ForwardToClientTest(NamedTuple): "milestone": None, "merge_when_pipeline_succeeds": False, "merge_status": "can_be_merged", - "detailed_merge_status": "mergeable", + "detailed_merge_status": "not_open", "merge_after": None, "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", "merge_commit_sha": None, @@ -899,26 +1074,68 @@ class ForwardToClientTest(NamedTuple): "has_conflicts": False, "blocking_discussions_resolved": True, "approvals_before_merge": None, + "subscribed": True, + "changes_count": "1", + "latest_build_started_at": None, + "latest_build_finished_at": None, + "first_deployed_to_production_at": None, + "pipeline": None, + "head_pipeline": None, + "diff_refs": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + }, + "merge_error": None, + "user": {"can_merge": True}, }, - { - "id": 459277081, - "iid": 1, + ), + ], + provider_return_value={ + "data": { + "id": "463099183", + "number": "26", + "title": "PR from API 2026-03-11 11:01:25.358068", + "body": "Another PR, made through the API.", + "state": "closed", + "merged": False, + "html_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/26", + "head": { + "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "ref": "topics/blih", + }, + "base": {"sha": None, "ref": "main"}, + }, + "type": "gitlab", + "raw": { + "data": { + "id": 463099183, + "iid": 26, "project_id": 79787061, - "title": "Add blah", - "description": "", - "state": "opened", - "created_at": "2026-02-26T08:48:23.151Z", - "updated_at": "2026-03-11T10:54:27.749Z", + "title": "PR from API 2026-03-11 11:01:25.358068", + "description": "Another PR, made through the API.", + "state": "closed", + "created_at": "2026-03-11T11:01:25.811Z", + "updated_at": "2026-03-11T11:01:36.336Z", "merged_by": None, "merge_user": None, "merged_at": None, - "closed_by": None, - "closed_at": None, + "closed_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "closed_at": "2026-03-11T11:01:36.166Z", "target_branch": "main", - "source_branch": "topics/blah", - "user_notes_count": 47, + "source_branch": "topics/blih", + "user_notes_count": 0, "upvotes": 0, - "downvotes": 1, + "downvotes": 0, "author": { "id": 150871, "username": "jacquev6", @@ -942,108 +1159,16 @@ class ForwardToClientTest(NamedTuple): "milestone": None, "merge_when_pipeline_succeeds": False, "merge_status": "can_be_merged", - "detailed_merge_status": "mergeable", + "detailed_merge_status": "not_open", "merge_after": None, - "sha": "7497e018d01503b6abc3053b7896266115e631f6", + "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", "merge_commit_sha": None, "squash_commit_sha": None, "discussion_locked": None, "should_remove_source_branch": None, "force_remove_source_branch": True, - "prepared_at": "2026-02-26T08:48:30.331Z", - "reference": "!1", - "references": { - "short": "!1", - "relative": "!1", - "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!1", - }, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/1", - "time_stats": { - "time_estimate": 0, - "total_time_spent": 0, - "human_time_estimate": None, - "human_total_time_spent": None, - }, - "squash": False, - "squash_on_merge": False, - "task_completion_status": {"count": 0, "completed_count": 0}, - "has_conflicts": False, - "blocking_discussions_resolved": True, - "approvals_before_merge": None, - }, - ], - "meta": {"next_cursor": None}, - }, - ), - ForwardToClientTest( - provider_method=GitLabProvider.update_pull_request, - provider_args={"pull_request_id": "26", "title": None, "body": None, "state": "closed"}, - client_calls=[ - ClientForwardedCall( - client_method="update_merge_request", - client_args=("79787061", "26", {"state_event": "close"}), - client_kwds={}, - client_return_value={ - "id": 463099183, - "iid": 26, - "project_id": 79787061, - "title": "PR from API 2026-03-11 11:01:25.358068", - "description": "Another PR, made through the API.", - "state": "closed", - "created_at": "2026-03-11T11:01:25.811Z", - "updated_at": "2026-03-11T11:01:36.336Z", - "merged_by": None, - "merge_user": None, - "merged_at": None, - "closed_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "closed_at": "2026-03-11T11:01:36.166Z", - "target_branch": "main", - "source_branch": "topics/blih", - "user_notes_count": 0, - "upvotes": 0, - "downvotes": 0, - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "assignees": [], - "assignee": None, - "reviewers": [], - "source_project_id": 79787061, - "target_project_id": 79787061, - "labels": [], - "draft": False, - "imported": False, - "imported_from": "none", - "work_in_progress": False, - "milestone": None, - "merge_when_pipeline_succeeds": False, - "merge_status": "can_be_merged", - "detailed_merge_status": "not_open", - "merge_after": None, - "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "merge_commit_sha": None, - "squash_commit_sha": None, - "discussion_locked": None, - "should_remove_source_branch": None, - "force_remove_source_branch": True, - "prepared_at": "2026-03-11T11:01:27.014Z", - "reference": "!26", + "prepared_at": "2026-03-11T11:01:27.014Z", + "reference": "!26", "references": { "short": "!26", "relative": "!26", @@ -1077,117 +1202,7 @@ class ForwardToClientTest(NamedTuple): "merge_error": None, "user": {"can_merge": True}, }, - ), - ], - provider_return_value={ - "data": { - "id": "463099183", - "number": "26", - "title": "PR from API 2026-03-11 11:01:25.358068", - "body": "Another PR, made through the API.", - "state": "closed", - "merged": False, - "html_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/26", - "head": { - "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "ref": "topics/blih", - }, - "base": {"sha": None, "ref": "main"}, - }, - "type": "gitlab", - "raw": { - "id": 463099183, - "iid": 26, - "project_id": 79787061, - "title": "PR from API 2026-03-11 11:01:25.358068", - "description": "Another PR, made through the API.", - "state": "closed", - "created_at": "2026-03-11T11:01:25.811Z", - "updated_at": "2026-03-11T11:01:36.336Z", - "merged_by": None, - "merge_user": None, - "merged_at": None, - "closed_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "closed_at": "2026-03-11T11:01:36.166Z", - "target_branch": "main", - "source_branch": "topics/blih", - "user_notes_count": 0, - "upvotes": 0, - "downvotes": 0, - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "assignees": [], - "assignee": None, - "reviewers": [], - "source_project_id": 79787061, - "target_project_id": 79787061, - "labels": [], - "draft": False, - "imported": False, - "imported_from": "none", - "work_in_progress": False, - "milestone": None, - "merge_when_pipeline_succeeds": False, - "merge_status": "can_be_merged", - "detailed_merge_status": "not_open", - "merge_after": None, - "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "merge_commit_sha": None, - "squash_commit_sha": None, - "discussion_locked": None, - "should_remove_source_branch": None, - "force_remove_source_branch": True, - "prepared_at": "2026-03-11T11:01:27.014Z", - "reference": "!26", - "references": { - "short": "!26", - "relative": "!26", - "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!26", - }, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/26", - "time_stats": { - "time_estimate": 0, - "total_time_spent": 0, - "human_time_estimate": None, - "human_total_time_spent": None, - }, - "squash": False, - "squash_on_merge": False, - "task_completion_status": {"count": 0, "completed_count": 0}, - "has_conflicts": False, - "blocking_discussions_resolved": True, - "approvals_before_merge": None, - "subscribed": True, - "changes_count": "1", - "latest_build_started_at": None, - "latest_build_finished_at": None, - "first_deployed_to_production_at": None, - "pipeline": None, - "head_pipeline": None, - "diff_refs": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - }, - "merge_error": None, - "user": {"can_merge": True}, + "headers": None, }, "meta": {}, }, @@ -1298,95 +1313,142 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ + "raw": { + "data": [ + { + "id": 459277081, + "iid": 1, + "project_id": 79787061, + "title": "Add blah", + "description": "", + "state": "opened", + "created_at": "2026-02-26T08:48:23.151Z", + "updated_at": "2026-03-11T10:54:27.749Z", + "merged_by": None, + "merge_user": None, + "merged_at": None, + "closed_by": None, + "closed_at": None, + "target_branch": "main", + "source_branch": "topics/blah", + "user_notes_count": 47, + "upvotes": 0, + "downvotes": 1, + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "assignees": [], + "assignee": None, + "reviewers": [], + "source_project_id": 79787061, + "target_project_id": 79787061, + "labels": [], + "draft": False, + "imported": False, + "imported_from": "none", + "work_in_progress": False, + "milestone": None, + "merge_when_pipeline_succeeds": False, + "merge_status": "can_be_merged", + "detailed_merge_status": "mergeable", + "merge_after": None, + "sha": "7497e018d01503b6abc3053b7896266115e631f6", + "merge_commit_sha": None, + "squash_commit_sha": None, + "discussion_locked": None, + "should_remove_source_branch": None, + "force_remove_source_branch": True, + "prepared_at": "2026-02-26T08:48:30.331Z", + "reference": "!1", + "references": { + "short": "!1", + "relative": "!1", + "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!1", + }, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/1", + "time_stats": { + "time_estimate": 0, + "total_time_spent": 0, + "human_time_estimate": None, + "human_total_time_spent": None, + }, + "squash": False, + "squash_on_merge": False, + "task_completion_status": {"count": 0, "completed_count": 0}, + "has_conflicts": False, + "blocking_discussions_resolved": True, + "approvals_before_merge": None, + } + ], + "headers": None, + }, + "meta": {"next_cursor": None}, + }, + ), + ForwardToClientTest( + provider_method=GitLabProvider.get_commits, + provider_args={ + "ref": "1403774c82d64068af027d0b5d0cc4f52473b6f2", + "pagination": None, + "request_options": None, + }, + client_calls=[ + ClientForwardedCall( + client_method="get_commits", + client_args=("79787061",), + client_kwds={"ref": "1403774c82d64068af027d0b5d0cc4f52473b6f2", "path": None}, + client_return_value=[ + { + "id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", + "short_id": "1403774c", + "created_at": "2026-02-16T14:24:18.000+01:00", + "parent_ids": [], + "title": "Initial commit", + "message": "Initial commit", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-02-16T14:24:18.000+01:00", + "committer_name": "GitHub", + "committer_email": "noreply@github.com", + "committed_date": "2026-02-16T14:24:18.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/1403774c82d64068af027d0b5d0cc4f52473b6f2", + } + ], + ), + ], + provider_return_value={ + "data": [ { - "id": 459277081, - "iid": 1, - "project_id": 79787061, - "title": "Add blah", - "description": "", - "state": "opened", - "created_at": "2026-02-26T08:48:23.151Z", - "updated_at": "2026-03-11T10:54:27.749Z", - "merged_by": None, - "merge_user": None, - "merged_at": None, - "closed_by": None, - "closed_at": None, - "target_branch": "main", - "source_branch": "topics/blah", - "user_notes_count": 47, - "upvotes": 0, - "downvotes": 1, + "id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", + "message": "Initial commit", "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "assignees": [], - "assignee": None, - "reviewers": [], - "source_project_id": 79787061, - "target_project_id": 79787061, - "labels": [], - "draft": False, - "imported": False, - "imported_from": "none", - "work_in_progress": False, - "milestone": None, - "merge_when_pipeline_succeeds": False, - "merge_status": "can_be_merged", - "detailed_merge_status": "mergeable", - "merge_after": None, - "sha": "7497e018d01503b6abc3053b7896266115e631f6", - "merge_commit_sha": None, - "squash_commit_sha": None, - "discussion_locked": None, - "should_remove_source_branch": None, - "force_remove_source_branch": True, - "prepared_at": "2026-02-26T08:48:30.331Z", - "reference": "!1", - "references": { - "short": "!1", - "relative": "!1", - "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!1", - }, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/1", - "time_stats": { - "time_estimate": 0, - "total_time_spent": 0, - "human_time_estimate": None, - "human_total_time_spent": None, + "email": "vincent@vincent-jacques.net", + "date": datetime.datetime( + 2026, + 2, + 16, + 14, + 24, + 18, + tzinfo=datetime.timezone(datetime.timedelta(seconds=3600)), + ), }, - "squash": False, - "squash_on_merge": False, - "task_completion_status": {"count": 0, "completed_count": 0}, - "has_conflicts": False, - "blocking_discussions_resolved": True, - "approvals_before_merge": None, + "files": None, } ], - "meta": {"next_cursor": None}, - }, - ), - ForwardToClientTest( - provider_method=GitLabProvider.get_commits, - provider_args={ - "ref": "1403774c82d64068af027d0b5d0cc4f52473b6f2", - "pagination": None, - "request_options": None, - }, - client_calls=[ - ClientForwardedCall( - client_method="get_commits", - client_args=("79787061",), - client_kwds={"ref": "1403774c82d64068af027d0b5d0cc4f52473b6f2", "path": None}, - client_return_value=[ + "type": "gitlab", + "raw": { + "data": [ { "id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", "short_id": "1403774c", @@ -1405,49 +1467,8 @@ class ForwardToClientTest(NamedTuple): "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/1403774c82d64068af027d0b5d0cc4f52473b6f2", } ], - ), - ], - provider_return_value={ - "data": [ - { - "id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", - "message": "Initial commit", - "author": { - "name": "Vincent Jacques", - "email": "vincent@vincent-jacques.net", - "date": datetime.datetime( - 2026, - 2, - 16, - 14, - 24, - 18, - tzinfo=datetime.timezone(datetime.timedelta(seconds=3600)), - ), - }, - "files": None, - } - ], - "type": "gitlab", - "raw": [ - { - "id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", - "short_id": "1403774c", - "created_at": "2026-02-16T14:24:18.000+01:00", - "parent_ids": [], - "title": "Initial commit", - "message": "Initial commit", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-02-16T14:24:18.000+01:00", - "committer_name": "GitHub", - "committer_email": "noreply@github.com", - "committed_date": "2026-02-16T14:24:18.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/1403774c82d64068af027d0b5d0cc4f52473b6f2", - } - ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -1510,25 +1531,28 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", - "short_id": "1403774c", - "created_at": "2026-02-16T14:24:18.000+01:00", - "parent_ids": [], - "title": "Initial commit", - "message": "Initial commit", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-02-16T14:24:18.000+01:00", - "committer_name": "GitHub", - "committer_email": "noreply@github.com", - "committed_date": "2026-02-16T14:24:18.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/1403774c82d64068af027d0b5d0cc4f52473b6f2", - } - ], + "raw": { + "data": [ + { + "id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", + "short_id": "1403774c", + "created_at": "2026-02-16T14:24:18.000+01:00", + "parent_ids": [], + "title": "Initial commit", + "message": "Initial commit", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-02-16T14:24:18.000+01:00", + "committer_name": "GitHub", + "committer_email": "noreply@github.com", + "committed_date": "2026-02-16T14:24:18.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/1403774c82d64068af027d0b5d0cc4f52473b6f2", + } + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -1581,36 +1605,39 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "id": 3123861269, - "type": None, - "body": "A comment!", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-02T09:24:34.040Z", - "updated_at": "2026-03-11T10:51:17.829Z", - "system": False, - "noteable_id": 185129497, - "noteable_type": "Issue", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - } - ], + "raw": { + "data": [ + { + "id": 3123861269, + "type": None, + "body": "A comment!", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T09:24:34.040Z", + "updated_at": "2026-03-11T10:51:17.829Z", + "system": False, + "noteable_id": 185129497, + "noteable_type": "Issue", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + } + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -1664,32 +1691,35 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": 3149925511, - "type": None, - "body": "Another comment, made through the API.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "data": { + "id": 3149925511, + "type": None, + "body": "Another comment, made through the API.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:02:12.644Z", + "updated_at": "2026-03-11T11:02:12.644Z", + "system": False, + "noteable_id": 185129497, + "noteable_type": "Issue", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T11:02:12.644Z", - "updated_at": "2026-03-11T11:02:12.644Z", - "system": False, - "noteable_id": 185129497, - "noteable_type": "Issue", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, + "headers": None, }, "meta": {}, }, @@ -1776,64 +1806,67 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 3149925511, - "type": None, - "body": "Another comment, made through the API.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T11:02:12.644Z", - "updated_at": "2026-03-11T11:02:12.644Z", - "system": False, - "noteable_id": 185129497, - "noteable_type": "Issue", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3123861269, - "type": None, - "body": "A comment!", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 3149925511, + "type": None, + "body": "Another comment, made through the API.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:02:12.644Z", + "updated_at": "2026-03-11T11:02:12.644Z", + "system": False, + "noteable_id": 185129497, + "noteable_type": "Issue", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-02T09:24:34.040Z", - "updated_at": "2026-03-11T10:51:17.829Z", - "system": False, - "noteable_id": 185129497, - "noteable_type": "Issue", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - ], + { + "id": 3123861269, + "type": None, + "body": "A comment!", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T09:24:34.040Z", + "updated_at": "2026-03-11T10:51:17.829Z", + "system": False, + "noteable_id": 185129497, + "noteable_type": "Issue", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + }, + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -1899,36 +1932,39 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "id": 3123861269, - "type": None, - "body": "A comment!", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-02T09:24:34.040Z", - "updated_at": "2026-03-11T10:51:17.829Z", - "system": False, - "noteable_id": 185129497, - "noteable_type": "Issue", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - } - ], + "raw": { + "data": [ + { + "id": 3123861269, + "type": None, + "body": "A comment!", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T09:24:34.040Z", + "updated_at": "2026-03-11T10:51:17.829Z", + "system": False, + "noteable_id": 185129497, + "noteable_type": "Issue", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + } + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -2140,160 +2176,163 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 43909506, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-02T10:42:08.895Z", - "updated_at": "2026-03-02T10:42:08.895Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43909515, - "name": "eyes", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-02T10:42:18.466Z", - "updated_at": "2026-03-02T10:42:18.466Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43909523, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43909506, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:08.895Z", + "updated_at": "2026-03-02T10:42:08.895Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T10:42:28.940Z", - "updated_at": "2026-03-02T10:42:28.940Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911188, - "name": "thumbsdown", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43909515, + "name": "eyes", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:18.466Z", + "updated_at": "2026-03-02T10:42:18.466Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:12:10.398Z", - "updated_at": "2026-03-02T11:12:10.398Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911265, - "name": "laughing", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43909523, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:28.940Z", + "updated_at": "2026-03-02T10:42:28.940Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:13:39.041Z", - "updated_at": "2026-03-02T11:13:39.041Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911283, - "name": "tada", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911188, + "name": "thumbsdown", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:12:10.398Z", + "updated_at": "2026-03-02T11:12:10.398Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:08.025Z", - "updated_at": "2026-03-02T11:14:08.025Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911304, - "name": "confused", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911265, + "name": "laughing", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:13:39.041Z", + "updated_at": "2026-03-02T11:13:39.041Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:32.169Z", - "updated_at": "2026-03-02T11:14:32.169Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911321, - "name": "heart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911283, + "name": "tada", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:08.025Z", + "updated_at": "2026-03-02T11:14:08.025Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:48.305Z", - "updated_at": "2026-03-02T11:14:48.305Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - ], + { + "id": 43911304, + "name": "confused", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:32.169Z", + "updated_at": "2026-03-02T11:14:32.169Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, + }, + { + "id": 43911321, + "name": "heart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:48.305Z", + "updated_at": "2026-03-02T11:14:48.305Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, + }, + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -2334,23 +2373,26 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": 44362880, - "name": "rocket", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "data": { + "id": 44362880, + "name": "rocket", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:02:42.934Z", + "updated_at": "2026-03-11T11:02:42.934Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-11T11:02:42.934Z", - "updated_at": "2026-03-11T11:02:42.934Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, + "headers": None, }, "meta": {}, }, @@ -2587,179 +2629,182 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 43909506, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43909506, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:08.895Z", + "updated_at": "2026-03-02T10:42:08.895Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T10:42:08.895Z", - "updated_at": "2026-03-02T10:42:08.895Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43909515, - "name": "eyes", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43909515, + "name": "eyes", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:18.466Z", + "updated_at": "2026-03-02T10:42:18.466Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T10:42:18.466Z", - "updated_at": "2026-03-02T10:42:18.466Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43909523, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43909523, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:28.940Z", + "updated_at": "2026-03-02T10:42:28.940Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T10:42:28.940Z", - "updated_at": "2026-03-02T10:42:28.940Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911188, - "name": "thumbsdown", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911188, + "name": "thumbsdown", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:12:10.398Z", + "updated_at": "2026-03-02T11:12:10.398Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:12:10.398Z", - "updated_at": "2026-03-02T11:12:10.398Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911265, - "name": "laughing", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911265, + "name": "laughing", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:13:39.041Z", + "updated_at": "2026-03-02T11:13:39.041Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:13:39.041Z", - "updated_at": "2026-03-02T11:13:39.041Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911283, - "name": "tada", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911283, + "name": "tada", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:08.025Z", + "updated_at": "2026-03-02T11:14:08.025Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:08.025Z", - "updated_at": "2026-03-02T11:14:08.025Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911304, - "name": "confused", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911304, + "name": "confused", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:32.169Z", + "updated_at": "2026-03-02T11:14:32.169Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:32.169Z", - "updated_at": "2026-03-02T11:14:32.169Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911321, - "name": "heart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911321, + "name": "heart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:48.305Z", + "updated_at": "2026-03-02T11:14:48.305Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:48.305Z", - "updated_at": "2026-03-02T11:14:48.305Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 44362880, - "name": "rocket", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 44362880, + "name": "rocket", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:02:42.934Z", + "updated_at": "2026-03-11T11:02:42.934Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-11T11:02:42.934Z", - "updated_at": "2026-03-11T11:02:42.934Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -2984,160 +3029,163 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 43909506, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-02T10:42:08.895Z", - "updated_at": "2026-03-02T10:42:08.895Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43909515, - "name": "eyes", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43909506, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:08.895Z", + "updated_at": "2026-03-02T10:42:08.895Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T10:42:18.466Z", - "updated_at": "2026-03-02T10:42:18.466Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43909523, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43909515, + "name": "eyes", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:18.466Z", + "updated_at": "2026-03-02T10:42:18.466Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T10:42:28.940Z", - "updated_at": "2026-03-02T10:42:28.940Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911188, - "name": "thumbsdown", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43909523, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T10:42:28.940Z", + "updated_at": "2026-03-02T10:42:28.940Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:12:10.398Z", - "updated_at": "2026-03-02T11:12:10.398Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911265, - "name": "laughing", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911188, + "name": "thumbsdown", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:12:10.398Z", + "updated_at": "2026-03-02T11:12:10.398Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:13:39.041Z", - "updated_at": "2026-03-02T11:13:39.041Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911283, - "name": "tada", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911265, + "name": "laughing", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:13:39.041Z", + "updated_at": "2026-03-02T11:13:39.041Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:08.025Z", - "updated_at": "2026-03-02T11:14:08.025Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911304, - "name": "confused", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911283, + "name": "tada", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:08.025Z", + "updated_at": "2026-03-02T11:14:08.025Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:32.169Z", - "updated_at": "2026-03-02T11:14:32.169Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43911321, - "name": "heart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43911304, + "name": "confused", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:32.169Z", + "updated_at": "2026-03-02T11:14:32.169Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T11:14:48.305Z", - "updated_at": "2026-03-02T11:14:48.305Z", - "awardable_id": 3123861269, - "awardable_type": "Note", - "url": None, - }, - ], + { + "id": 43911321, + "name": "heart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T11:14:48.305Z", + "updated_at": "2026-03-02T11:14:48.305Z", + "awardable_id": 3123861269, + "awardable_type": "Note", + "url": None, + }, + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -4074,2489 +4122,945 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "id": 3149884824, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 3149884824, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:39.481Z", + "updated_at": "2026-03-11T10:54:39.487Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T10:54:39.481Z", - "updated_at": "2026-03-11T10:54:39.487Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149884711, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:37.587Z", - "updated_at": "2026-03-11T10:54:39.420Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:54:39.420Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149883989, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:27.718Z", - "updated_at": "2026-03-11T10:54:39.420Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:54:39.420Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149861666, - "type": None, - "body": "A great comment!", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:49:16.764Z", - "updated_at": "2026-03-11T10:49:23.286Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149860409, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:48:59.701Z", - "updated_at": "2026-03-11T10:48:59.706Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149830983, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:41:48.803Z", - "updated_at": "2026-03-11T10:48:59.635Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:59.635Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149830400, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:41:38.931Z", - "updated_at": "2026-03-11T10:48:59.635Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:59.635Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149614637, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T09:46:29.524Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149614105, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T09:46:19.570Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149593898, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T09:41:39.085Z", - "updated_at": "2026-03-11T10:48:55.813Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:55.813Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149593131, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T09:41:29.065Z", - "updated_at": "2026-03-11T10:48:55.813Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:55.813Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149374674, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T08:40:50.641Z", - "updated_at": "2026-03-11T10:48:54.026Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:54.026Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149374039, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T08:40:40.323Z", - "updated_at": "2026-03-11T10:48:54.026Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:54.026Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149056679, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T06:16:55.897Z", - "updated_at": "2026-03-11T10:48:52.678Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:52.678Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149056453, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T06:16:45.970Z", - "updated_at": "2026-03-11T10:48:52.678Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:52.678Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149030774, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T06:00:28.506Z", - "updated_at": "2026-03-11T10:48:50.527Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:50.527Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149030578, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T06:00:18.211Z", - "updated_at": "2026-03-11T10:48:50.527Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:50.527Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3146555287, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-10T14:41:56.638Z", - "updated_at": "2026-03-10T14:41:56.642Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3145802996, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-10T11:11:36.929Z", - "updated_at": "2026-03-10T14:41:52.922Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-10T14:41:52.922Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3145802877, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-10 11:11:34.526408.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-10T11:11:35.508Z", - "updated_at": "2026-03-10T14:41:52.922Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-10T14:41:52.922Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - ], - "meta": {"next_cursor": None}, - }, - ), - ForwardToClientTest( - provider_method=GitLabProvider.create_pull_request_comment, - provider_args={ - "pull_request_id": "1", - "body": "Another comment, made through the API.", - }, - client_calls=[ - ClientForwardedCall( - client_method="create_merge_request_note", - client_args=( - "79787061", - "1", - {"body": "Another comment, made through the API."}, - ), - client_kwds={}, - client_return_value={ - "id": 3149931216, - "type": None, - "body": "Another comment, made through the API.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T11:03:13.116Z", - "updated_at": "2026-03-11T11:03:13.116Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - ), - ], - provider_return_value={ - "data": { - "id": "3149931216", - "body": "Another comment, made through the API.", - "author": {"id": "150871", "username": "jacquev6"}, - }, - "type": "gitlab", - "raw": { - "id": 3149931216, - "type": None, - "body": "Another comment, made through the API.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T11:03:13.116Z", - "updated_at": "2026-03-11T11:03:13.116Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - "meta": {}, - }, - ), - ForwardToClientTest( - provider_method=GitLabProvider.get_pull_request_comments, - provider_args={"pull_request_id": "1", "pagination": None, "request_options": None}, - client_calls=[ - ClientForwardedCall( - client_method="get_merge_request_notes", - client_args=("79787061", "1"), - client_kwds={}, - client_return_value=[ - { - "id": 3149931216, - "type": None, - "body": "Another comment, made through the API.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T11:03:13.116Z", - "updated_at": "2026-03-11T11:03:13.116Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149884824, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:39.481Z", - "updated_at": "2026-03-11T10:54:39.487Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149884711, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:37.587Z", - "updated_at": "2026-03-11T10:54:39.420Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:54:39.420Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149883989, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:27.718Z", - "updated_at": "2026-03-11T10:54:39.420Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:54:39.420Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149861666, - "type": None, - "body": "A great comment!", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:49:16.764Z", - "updated_at": "2026-03-11T10:49:23.286Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149860409, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:48:59.701Z", - "updated_at": "2026-03-11T10:48:59.706Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149830983, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:41:48.803Z", - "updated_at": "2026-03-11T10:48:59.635Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:59.635Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149830400, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:41:38.931Z", - "updated_at": "2026-03-11T10:48:59.635Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:59.635Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149614637, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T09:46:29.524Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149614105, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T09:46:19.570Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149593898, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T09:41:39.085Z", - "updated_at": "2026-03-11T10:48:55.813Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:55.813Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149593131, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T09:41:29.065Z", - "updated_at": "2026-03-11T10:48:55.813Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:55.813Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149374674, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T08:40:50.641Z", - "updated_at": "2026-03-11T10:48:54.026Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:54.026Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149374039, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T08:40:40.323Z", - "updated_at": "2026-03-11T10:48:54.026Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:54.026Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149056679, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T06:16:55.897Z", - "updated_at": "2026-03-11T10:48:52.678Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:52.678Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149056453, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T06:16:45.970Z", - "updated_at": "2026-03-11T10:48:52.678Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:52.678Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149030774, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T06:00:28.506Z", - "updated_at": "2026-03-11T10:48:50.527Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:50.527Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149030578, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T06:00:18.211Z", - "updated_at": "2026-03-11T10:48:50.527Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:50.527Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3146555287, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-10T14:41:56.638Z", - "updated_at": "2026-03-10T14:41:56.642Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3145802996, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-10T11:11:36.929Z", - "updated_at": "2026-03-10T14:41:52.922Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-10T14:41:52.922Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - ], - ), - ], - provider_return_value={ - "data": [ - { - "id": "3149931216", - "body": "Another comment, made through the API.", - "author": {"id": "150871", "username": "jacquev6"}, - }, - { - "id": "3149861666", - "body": "A great comment!", - "author": {"id": "150871", "username": "jacquev6"}, - }, - ], - "type": "gitlab", - "raw": [ - { - "id": 3149931216, - "type": None, - "body": "Another comment, made through the API.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T11:03:13.116Z", - "updated_at": "2026-03-11T11:03:13.116Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149884824, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:39.481Z", - "updated_at": "2026-03-11T10:54:39.487Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149884711, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:37.587Z", - "updated_at": "2026-03-11T10:54:39.420Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:54:39.420Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149883989, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:27.718Z", - "updated_at": "2026-03-11T10:54:39.420Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:54:39.420Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149861666, - "type": None, - "body": "A great comment!", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:49:16.764Z", - "updated_at": "2026-03-11T10:49:23.286Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149860409, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:48:59.701Z", - "updated_at": "2026-03-11T10:48:59.706Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149830983, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:41:48.803Z", - "updated_at": "2026-03-11T10:48:59.635Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149884711, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:37.587Z", + "updated_at": "2026-03-11T10:54:39.420Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:54:39.420Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:59.635Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149830400, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149883989, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:27.718Z", + "updated_at": "2026-03-11T10:54:39.420Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:54:39.420Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T10:41:38.931Z", - "updated_at": "2026-03-11T10:48:59.635Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149861666, + "type": None, + "body": "A great comment!", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:49:16.764Z", + "updated_at": "2026-03-11T10:49:23.286Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149860409, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:48:59.701Z", + "updated_at": "2026-03-11T10:48:59.706Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:59.635Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149614637, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149830983, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:41:48.803Z", + "updated_at": "2026-03-11T10:48:59.635Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:59.635Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T09:46:29.524Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149830400, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:41:38.931Z", + "updated_at": "2026-03-11T10:48:59.635Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:59.635Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149614637, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:46:29.524Z", + "updated_at": "2026-03-11T10:48:58.011Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:58.011Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149614105, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149614105, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:46:19.570Z", + "updated_at": "2026-03-11T10:48:58.011Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:58.011Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T09:46:19.570Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149593898, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:41:39.085Z", + "updated_at": "2026-03-11T10:48:55.813Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:55.813Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149593131, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:41:29.065Z", + "updated_at": "2026-03-11T10:48:55.813Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:55.813Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149593898, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149374674, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T08:40:50.641Z", + "updated_at": "2026-03-11T10:48:54.026Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:54.026Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T09:41:39.085Z", - "updated_at": "2026-03-11T10:48:55.813Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149374039, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T08:40:40.323Z", + "updated_at": "2026-03-11T10:48:54.026Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:54.026Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149056679, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:16:55.897Z", + "updated_at": "2026-03-11T10:48:52.678Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:55.813Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149593131, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149056453, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:16:45.970Z", + "updated_at": "2026-03-11T10:48:52.678Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T09:41:29.065Z", - "updated_at": "2026-03-11T10:48:55.813Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149030774, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:00:28.506Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149030578, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:00:18.211Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:55.813Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149374674, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3146555287, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T14:41:56.638Z", + "updated_at": "2026-03-10T14:41:56.642Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T08:40:50.641Z", - "updated_at": "2026-03-11T10:48:54.026Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3145802996, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T11:11:36.929Z", + "updated_at": "2026-03-10T14:41:52.922Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-10T14:41:52.922Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3145802877, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-10 11:11:34.526408.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T11:11:35.508Z", + "updated_at": "2026-03-10T14:41:52.922Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-10T14:41:52.922Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:54.026Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149374039, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", + ], + "headers": None, + }, + "meta": {"next_cursor": None}, + }, + ), + ForwardToClientTest( + provider_method=GitLabProvider.create_pull_request_comment, + provider_args={ + "pull_request_id": "1", + "body": "Another comment, made through the API.", + }, + client_calls=[ + ClientForwardedCall( + client_method="create_merge_request_note", + client_args=( + "79787061", + "1", + {"body": "Another comment, made through the API."}, + ), + client_kwds={}, + client_return_value={ + "id": 3149931216, + "type": None, + "body": "Another comment, made through the API.", "author": { "id": 150871, "username": "jacquev6", @@ -6567,35 +5071,13 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T08:40:40.323Z", - "updated_at": "2026-03-11T10:48:54.026Z", + "created_at": "2026-03-11T11:03:13.116Z", + "updated_at": "2026-03-11T11:03:13.116Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:54.026Z", - "suggestions": [], + "resolvable": False, "confidential": False, "internal": False, "imported": False, @@ -6603,10 +5085,20 @@ class ForwardToClientTest(NamedTuple): "noteable_iid": 1, "commands_changes": {}, }, - { - "id": 3149056679, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", + ), + ], + provider_return_value={ + "data": { + "id": "3149931216", + "body": "Another comment, made through the API.", + "author": {"id": "150871", "username": "jacquev6"}, + }, + "type": "gitlab", + "raw": { + "data": { + "id": 3149931216, + "type": None, + "body": "Another comment, made through the API.", "author": { "id": 150871, "username": "jacquev6", @@ -6617,35 +5109,13 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T06:16:55.897Z", - "updated_at": "2026-03-11T10:48:52.678Z", + "created_at": "2026-03-11T11:03:13.116Z", + "updated_at": "2026-03-11T11:03:13.116Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:52.678Z", - "suggestions": [], + "resolvable": False, "confidential": False, "internal": False, "imported": False, @@ -6653,264 +5123,736 @@ class ForwardToClientTest(NamedTuple): "noteable_iid": 1, "commands_changes": {}, }, - { - "id": 3149056453, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "headers": None, + }, + "meta": {}, + }, + ), + ForwardToClientTest( + provider_method=GitLabProvider.get_pull_request_comments, + provider_args={"pull_request_id": "1", "pagination": None, "request_options": None}, + client_calls=[ + ClientForwardedCall( + client_method="get_merge_request_notes", + client_args=("79787061", "1"), + client_kwds={}, + client_return_value=[ + { + "id": 3149931216, + "type": None, + "body": "Another comment, made through the API.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:03:13.116Z", + "updated_at": "2026-03-11T11:03:13.116Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T06:16:45.970Z", - "updated_at": "2026-03-11T10:48:52.678Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149884824, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:39.481Z", + "updated_at": "2026-03-11T10:54:39.487Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + }, + { + "id": 3149884711, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:37.587Z", + "updated_at": "2026-03-11T10:54:39.420Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:54:39.420Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + }, + { + "id": 3149883989, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:27.718Z", + "updated_at": "2026-03-11T10:54:39.420Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:54:39.420Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149861666, + "type": None, + "body": "A great comment!", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:49:16.764Z", + "updated_at": "2026-03-11T10:49:23.286Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:52.678Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149030774, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149860409, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:48:59.701Z", + "updated_at": "2026-03-11T10:48:59.706Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T06:00:28.506Z", - "updated_at": "2026-03-11T10:48:50.527Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149830983, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:41:48.803Z", + "updated_at": "2026-03-11T10:48:59.635Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:59.635Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149830400, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:41:38.931Z", + "updated_at": "2026-03-11T10:48:59.635Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:59.635Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + }, + { + "id": 3149614637, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:46:29.524Z", + "updated_at": "2026-03-11T10:48:58.011Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:58.011Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:50.527Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149030578, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149614105, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:46:19.570Z", + "updated_at": "2026-03-11T10:48:58.011Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:58.011Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T06:00:18.211Z", - "updated_at": "2026-03-11T10:48:50.527Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149593898, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:41:39.085Z", + "updated_at": "2026-03-11T10:48:55.813Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:55.813Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149593131, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:41:29.065Z", + "updated_at": "2026-03-11T10:48:55.813Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:55.813Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:50.527Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3146555287, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149374674, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T08:40:50.641Z", + "updated_at": "2026-03-11T10:48:54.026Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:54.026Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-10T14:41:56.638Z", - "updated_at": "2026-03-10T14:41:56.642Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3145802996, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149374039, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T08:40:40.323Z", + "updated_at": "2026-03-11T10:48:54.026Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:54.026Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-10T11:11:36.929Z", - "updated_at": "2026-03-10T14:41:52.922Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149056679, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:16:55.897Z", + "updated_at": "2026-03-11T10:48:52.678Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149056453, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:16:45.970Z", + "updated_at": "2026-03-11T10:48:52.678Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-10T14:41:52.922Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - ], - "meta": {"next_cursor": None}, - }, - ), - ForwardToClientTest( - provider_method=GitLabProvider.delete_pull_request_comment, - provider_args={"pull_request_id": "1", "comment_id": "3149931216"}, - client_calls=[ - ClientForwardedCall( - client_method="delete_merge_request_note", - client_args=("79787061", "1", "3149931216"), - client_kwds={}, - client_return_value={}, - ), - ], - provider_return_value=None, - ), - ForwardToClientTest( - provider_method=GitLabProvider.get_pull_request_comments, - provider_args={"pull_request_id": "1", "pagination": None, "request_options": None}, - client_calls=[ - ClientForwardedCall( - client_method="get_merge_request_notes", - client_args=("79787061", "1"), - client_kwds={}, - client_return_value=[ { - "id": 3149884824, - "type": None, - "body": "resolved all threads", + "id": 3149030774, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", "author": { "id": 150871, "username": "jacquev6", @@ -6921,13 +5863,35 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T10:54:39.481Z", - "updated_at": "2026-03-11T10:54:39.487Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, + "created_at": "2026-03-11T06:00:28.506Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], "confidential": False, "internal": False, "imported": False, @@ -6936,9 +5900,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149884711, + "id": 3149030578, "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", "author": { "id": 150871, "username": "jacquev6", @@ -6949,8 +5913,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T10:54:37.587Z", - "updated_at": "2026-03-11T10:54:39.420Z", + "created_at": "2026-03-11T06:00:18.211Z", + "updated_at": "2026-03-11T10:48:50.527Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -6976,7 +5940,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:54:39.420Z", + "resolved_at": "2026-03-11T10:48:50.527Z", "suggestions": [], "confidential": False, "internal": False, @@ -6986,9 +5950,37 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149883989, + "id": 3146555287, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T14:41:56.638Z", + "updated_at": "2026-03-10T14:41:56.642Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + }, + { + "id": 3145802996, "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", + "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", "author": { "id": 150871, "username": "jacquev6", @@ -6999,8 +5991,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T10:54:27.718Z", - "updated_at": "2026-03-11T10:54:39.420Z", + "created_at": "2026-03-10T11:11:36.929Z", + "updated_at": "2026-03-10T14:41:52.922Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7026,7 +6018,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:54:39.420Z", + "resolved_at": "2026-03-10T14:41:52.922Z", "suggestions": [], "confidential": False, "internal": False, @@ -7035,10 +6027,29 @@ class ForwardToClientTest(NamedTuple): "noteable_iid": 1, "commands_changes": {}, }, + ], + ), + ], + provider_return_value={ + "data": [ + { + "id": "3149931216", + "body": "Another comment, made through the API.", + "author": {"id": "150871", "username": "jacquev6"}, + }, + { + "id": "3149861666", + "body": "A great comment!", + "author": {"id": "150871", "username": "jacquev6"}, + }, + ], + "type": "gitlab", + "raw": { + "data": [ { - "id": 3149861666, + "id": 3149931216, "type": None, - "body": "A great comment!", + "body": "Another comment, made through the API.", "author": { "id": 150871, "username": "jacquev6", @@ -7049,8 +6060,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T10:49:16.764Z", - "updated_at": "2026-03-11T10:49:23.286Z", + "created_at": "2026-03-11T11:03:13.116Z", + "updated_at": "2026-03-11T11:03:13.116Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7064,7 +6075,7 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149860409, + "id": 3149884824, "type": None, "body": "resolved all threads", "author": { @@ -7077,8 +6088,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T10:48:59.701Z", - "updated_at": "2026-03-11T10:48:59.706Z", + "created_at": "2026-03-11T10:54:39.481Z", + "updated_at": "2026-03-11T10:54:39.487Z", "system": True, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7092,9 +6103,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149830983, + "id": 3149884711, "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", "author": { "id": 150871, "username": "jacquev6", @@ -7105,8 +6116,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T10:41:48.803Z", - "updated_at": "2026-03-11T10:48:59.635Z", + "created_at": "2026-03-11T10:54:37.587Z", + "updated_at": "2026-03-11T10:54:39.420Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7132,7 +6143,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:59.635Z", + "resolved_at": "2026-03-11T10:54:39.420Z", "suggestions": [], "confidential": False, "internal": False, @@ -7142,9 +6153,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149830400, + "id": 3149883989, "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", "author": { "id": 150871, "username": "jacquev6", @@ -7155,8 +6166,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T10:41:38.931Z", - "updated_at": "2026-03-11T10:48:59.635Z", + "created_at": "2026-03-11T10:54:27.718Z", + "updated_at": "2026-03-11T10:54:39.420Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7182,7 +6193,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:59.635Z", + "resolved_at": "2026-03-11T10:54:39.420Z", "suggestions": [], "confidential": False, "internal": False, @@ -7192,9 +6203,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149614637, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", + "id": 3149861666, + "type": None, + "body": "A great comment!", "author": { "id": 150871, "username": "jacquev6", @@ -7205,35 +6216,13 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T09:46:29.524Z", - "updated_at": "2026-03-11T10:48:58.011Z", + "created_at": "2026-03-11T10:49:16.764Z", + "updated_at": "2026-03-11T10:49:23.286Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], + "resolvable": False, "confidential": False, "internal": False, "imported": False, @@ -7242,9 +6231,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149614105, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", + "id": 3149860409, + "type": None, + "body": "resolved all threads", "author": { "id": 150871, "username": "jacquev6", @@ -7255,35 +6244,13 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T09:46:19.570Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, + "created_at": "2026-03-11T10:48:59.701Z", + "updated_at": "2026-03-11T10:48:59.706Z", + "system": True, "noteable_id": 459277081, "noteable_type": "MergeRequest", "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], + "resolvable": False, "confidential": False, "internal": False, "imported": False, @@ -7292,9 +6259,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149593898, + "id": 3149830983, "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", "author": { "id": 150871, "username": "jacquev6", @@ -7305,8 +6272,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T09:41:39.085Z", - "updated_at": "2026-03-11T10:48:55.813Z", + "created_at": "2026-03-11T10:41:48.803Z", + "updated_at": "2026-03-11T10:48:59.635Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7332,7 +6299,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:55.813Z", + "resolved_at": "2026-03-11T10:48:59.635Z", "suggestions": [], "confidential": False, "internal": False, @@ -7342,9 +6309,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149593131, + "id": 3149830400, "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", "author": { "id": 150871, "username": "jacquev6", @@ -7355,8 +6322,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T09:41:29.065Z", - "updated_at": "2026-03-11T10:48:55.813Z", + "created_at": "2026-03-11T10:41:38.931Z", + "updated_at": "2026-03-11T10:48:59.635Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7382,7 +6349,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:55.813Z", + "resolved_at": "2026-03-11T10:48:59.635Z", "suggestions": [], "confidential": False, "internal": False, @@ -7392,9 +6359,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149374674, + "id": 3149614637, "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", "author": { "id": 150871, "username": "jacquev6", @@ -7405,8 +6372,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T08:40:50.641Z", - "updated_at": "2026-03-11T10:48:54.026Z", + "created_at": "2026-03-11T09:46:29.524Z", + "updated_at": "2026-03-11T10:48:58.011Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7432,7 +6399,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:54.026Z", + "resolved_at": "2026-03-11T10:48:58.011Z", "suggestions": [], "confidential": False, "internal": False, @@ -7442,9 +6409,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149374039, + "id": 3149614105, "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", "author": { "id": 150871, "username": "jacquev6", @@ -7455,8 +6422,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T08:40:40.323Z", - "updated_at": "2026-03-11T10:48:54.026Z", + "created_at": "2026-03-11T09:46:19.570Z", + "updated_at": "2026-03-11T10:48:58.011Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7482,7 +6449,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:54.026Z", + "resolved_at": "2026-03-11T10:48:58.011Z", "suggestions": [], "confidential": False, "internal": False, @@ -7492,9 +6459,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149056679, + "id": 3149593898, "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", "author": { "id": 150871, "username": "jacquev6", @@ -7505,8 +6472,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T06:16:55.897Z", - "updated_at": "2026-03-11T10:48:52.678Z", + "created_at": "2026-03-11T09:41:39.085Z", + "updated_at": "2026-03-11T10:48:55.813Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7532,7 +6499,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:52.678Z", + "resolved_at": "2026-03-11T10:48:55.813Z", "suggestions": [], "confidential": False, "internal": False, @@ -7542,9 +6509,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149056453, + "id": 3149593131, "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", "author": { "id": 150871, "username": "jacquev6", @@ -7555,8 +6522,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T06:16:45.970Z", - "updated_at": "2026-03-11T10:48:52.678Z", + "created_at": "2026-03-11T09:41:29.065Z", + "updated_at": "2026-03-11T10:48:55.813Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7582,7 +6549,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:52.678Z", + "resolved_at": "2026-03-11T10:48:55.813Z", "suggestions": [], "confidential": False, "internal": False, @@ -7592,9 +6559,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149030774, + "id": 3149374674, "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", + "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", "author": { "id": 150871, "username": "jacquev6", @@ -7605,8 +6572,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T06:00:28.506Z", - "updated_at": "2026-03-11T10:48:50.527Z", + "created_at": "2026-03-11T08:40:50.641Z", + "updated_at": "2026-03-11T10:48:54.026Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7632,7 +6599,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:50.527Z", + "resolved_at": "2026-03-11T10:48:54.026Z", "suggestions": [], "confidential": False, "internal": False, @@ -7642,9 +6609,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3149030578, + "id": 3149374039, "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", + "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", "author": { "id": 150871, "username": "jacquev6", @@ -7655,8 +6622,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-11T06:00:18.211Z", - "updated_at": "2026-03-11T10:48:50.527Z", + "created_at": "2026-03-11T08:40:40.323Z", + "updated_at": "2026-03-11T10:48:54.026Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7682,7 +6649,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-11T10:48:50.527Z", + "resolved_at": "2026-03-11T10:48:54.026Z", "suggestions": [], "confidential": False, "internal": False, @@ -7692,37 +6659,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3146555287, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-10T14:41:56.638Z", - "updated_at": "2026-03-10T14:41:56.642Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3145802996, + "id": 3149056679, "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", "author": { "id": 150871, "username": "jacquev6", @@ -7733,8 +6672,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-10T11:11:36.929Z", - "updated_at": "2026-03-10T14:41:52.922Z", + "created_at": "2026-03-11T06:16:55.897Z", + "updated_at": "2026-03-11T10:48:52.678Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7760,7 +6699,7 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-10T14:41:52.922Z", + "resolved_at": "2026-03-11T10:48:52.678Z", "suggestions": [], "confidential": False, "internal": False, @@ -7770,9 +6709,9 @@ class ForwardToClientTest(NamedTuple): "commands_changes": {}, }, { - "id": 3145802877, + "id": 3149056453, "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-10 11:11:34.526408.", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", "author": { "id": 150871, "username": "jacquev6", @@ -7783,8 +6722,8 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "created_at": "2026-03-10T11:11:35.508Z", - "updated_at": "2026-03-10T14:41:52.922Z", + "created_at": "2026-03-11T06:16:45.970Z", + "updated_at": "2026-03-11T10:48:52.678Z", "system": False, "noteable_id": 459277081, "noteable_type": "MergeRequest", @@ -7810,941 +6749,2062 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "resolved_at": "2026-03-10T14:41:52.922Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - ], - ), - ], - provider_return_value={ - "data": [ - { - "id": "3149861666", - "body": "A great comment!", - "author": {"id": "150871", "username": "jacquev6"}, - } - ], - "type": "gitlab", - "raw": [ - { - "id": 3149884824, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:39.481Z", - "updated_at": "2026-03-11T10:54:39.487Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149884711, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:37.587Z", - "updated_at": "2026-03-11T10:54:39.420Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:54:39.420Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149883989, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:54:27.718Z", - "updated_at": "2026-03-11T10:54:39.420Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "resolved_at": "2026-03-11T10:54:39.420Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149861666, - "type": None, - "body": "A great comment!", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:49:16.764Z", - "updated_at": "2026-03-11T10:49:23.286Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149860409, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:48:59.701Z", - "updated_at": "2026-03-11T10:48:59.706Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149830983, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T10:41:48.803Z", - "updated_at": "2026-03-11T10:48:59.635Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149030774, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:00:28.506Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:59.635Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149830400, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149030578, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:00:18.211Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T10:41:38.931Z", - "updated_at": "2026-03-11T10:48:59.635Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3146555287, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T14:41:56.638Z", + "updated_at": "2026-03-10T14:41:56.642Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3145802996, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T11:11:36.929Z", + "updated_at": "2026-03-10T14:41:52.922Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-10T14:41:52.922Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + }, + ], + "headers": None, + }, + "meta": {"next_cursor": None}, + }, + ), + ForwardToClientTest( + provider_method=GitLabProvider.delete_pull_request_comment, + provider_args={"pull_request_id": "1", "comment_id": "3149931216"}, + client_calls=[ + ClientForwardedCall( + client_method="delete_merge_request_note", + client_args=("79787061", "1", "3149931216"), + client_kwds={}, + client_return_value={}, + ), + ], + provider_return_value=None, + ), + ForwardToClientTest( + provider_method=GitLabProvider.get_pull_request_comments, + provider_args={"pull_request_id": "1", "pagination": None, "request_options": None}, + client_calls=[ + ClientForwardedCall( + client_method="get_merge_request_notes", + client_args=("79787061", "1"), + client_kwds={}, + client_return_value=[ + { + "id": 3149884824, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:39.481Z", + "updated_at": "2026-03-11T10:54:39.487Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:59.635Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149614637, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149884711, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:37.587Z", + "updated_at": "2026-03-11T10:54:39.420Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:54:39.420Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T09:46:29.524Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149883989, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:27.718Z", + "updated_at": "2026-03-11T10:54:39.420Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:54:39.420Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149861666, + "type": None, + "body": "A great comment!", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:49:16.764Z", + "updated_at": "2026-03-11T10:49:23.286Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149614105, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149860409, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:48:59.701Z", + "updated_at": "2026-03-11T10:48:59.706Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T09:46:19.570Z", - "updated_at": "2026-03-11T10:48:58.011Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149830983, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:41:48.803Z", + "updated_at": "2026-03-11T10:48:59.635Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:59.635Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149830400, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:41:38.931Z", + "updated_at": "2026-03-11T10:48:59.635Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:59.635Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:58.011Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149593898, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149614637, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:46:29.524Z", + "updated_at": "2026-03-11T10:48:58.011Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:58.011Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T09:41:39.085Z", - "updated_at": "2026-03-11T10:48:55.813Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149614105, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:46:19.570Z", + "updated_at": "2026-03-11T10:48:58.011Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:58.011Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149593898, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:41:39.085Z", + "updated_at": "2026-03-11T10:48:55.813Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:55.813Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:55.813Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149593131, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149593131, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:41:29.065Z", + "updated_at": "2026-03-11T10:48:55.813Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:55.813Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T09:41:29.065Z", - "updated_at": "2026-03-11T10:48:55.813Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149374674, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T08:40:50.641Z", + "updated_at": "2026-03-11T10:48:54.026Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:54.026Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149374039, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T08:40:40.323Z", + "updated_at": "2026-03-11T10:48:54.026Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:54.026Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:55.813Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149374674, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149056679, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:16:55.897Z", + "updated_at": "2026-03-11T10:48:52.678Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T08:40:50.641Z", - "updated_at": "2026-03-11T10:48:54.026Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149056453, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:16:45.970Z", + "updated_at": "2026-03-11T10:48:52.678Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149030774, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:00:28.506Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:54.026Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149374039, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149030578, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:00:18.211Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T08:40:40.323Z", - "updated_at": "2026-03-11T10:48:54.026Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3146555287, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T14:41:56.638Z", + "updated_at": "2026-03-10T14:41:56.642Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3145802996, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T11:11:36.929Z", + "updated_at": "2026-03-10T14:41:52.922Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-10T14:41:52.922Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:54.026Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, + { + "id": 3145802877, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-10 11:11:34.526408.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T11:11:35.508Z", + "updated_at": "2026-03-10T14:41:52.922Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-10T14:41:52.922Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + }, + ], + ), + ], + provider_return_value={ + "data": [ { - "id": 3149056679, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "id": "3149861666", + "body": "A great comment!", + "author": {"id": "150871", "username": "jacquev6"}, + } + ], + "type": "gitlab", + "raw": { + "data": [ + { + "id": 3149884824, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:39.481Z", + "updated_at": "2026-03-11T10:54:39.487Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T06:16:55.897Z", - "updated_at": "2026-03-11T10:48:52.678Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149884711, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:54:28.116590.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:37.587Z", + "updated_at": "2026-03-11T10:54:39.420Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:54:39.420Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149883989, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:54:26.720889.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:54:27.718Z", + "updated_at": "2026-03-11T10:54:39.420Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:54:39.420Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:52.678Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149056453, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149861666, + "type": None, + "body": "A great comment!", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:49:16.764Z", + "updated_at": "2026-03-11T10:49:23.286Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T06:16:45.970Z", - "updated_at": "2026-03-11T10:48:52.678Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149860409, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:48:59.701Z", + "updated_at": "2026-03-11T10:48:59.706Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149830983, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 10:41:39.384210.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:41:48.803Z", + "updated_at": "2026-03-11T10:48:59.635Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:59.635Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:52.678Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149030774, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149830400, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 10:41:37.997252.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T10:41:38.931Z", + "updated_at": "2026-03-11T10:48:59.635Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:59.635Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T06:00:28.506Z", - "updated_at": "2026-03-11T10:48:50.527Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149614637, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:46:20.040845.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:46:29.524Z", + "updated_at": "2026-03-11T10:48:58.011Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:58.011Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149614105, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:46:18.421280.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:46:19.570Z", + "updated_at": "2026-03-11T10:48:58.011Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:58.011Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:50.527Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3149030578, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149593898, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 09:41:29.673519.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:41:39.085Z", + "updated_at": "2026-03-11T10:48:55.813Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:55.813Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-11T06:00:18.211Z", - "updated_at": "2026-03-11T10:48:50.527Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149593131, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 09:41:28.208433.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T09:41:29.065Z", + "updated_at": "2026-03-11T10:48:55.813Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:55.813Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149374674, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 08:40:41.708400.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T08:40:50.641Z", + "updated_at": "2026-03-11T10:48:54.026Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:54.026Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-11T10:48:50.527Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3146555287, - "type": None, - "body": "resolved all threads", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149374039, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 08:40:38.693706.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T08:40:40.323Z", + "updated_at": "2026-03-11T10:48:54.026Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:54.026Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-10T14:41:56.638Z", - "updated_at": "2026-03-10T14:41:56.642Z", - "system": True, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "resolvable": False, - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3145802996, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149056679, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:16:46.431900.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:16:55.897Z", + "updated_at": "2026-03-11T10:48:52.678Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-10T11:11:36.929Z", - "updated_at": "2026-03-10T14:41:52.922Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3149056453, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:16:45.103757.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:16:45.970Z", + "updated_at": "2026-03-11T10:48:52.678Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:52.678Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149030774, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 06:00:18.900904.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:00:28.506Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-10T14:41:52.922Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - { - "id": 3145802877, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-10 11:11:34.526408.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3149030578, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 06:00:17.604102.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T06:00:18.211Z", + "updated_at": "2026-03-11T10:48:50.527Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-11T10:48:50.527Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "created_at": "2026-03-10T11:11:35.508Z", - "updated_at": "2026-03-10T14:41:52.922Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + { + "id": 3146555287, + "type": None, + "body": "resolved all threads", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T14:41:56.638Z", + "updated_at": "2026-03-10T14:41:56.642Z", + "system": True, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "resolvable": False, + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": True, - "resolved_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 3145802996, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-10 11:11:36.111214.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T11:11:36.929Z", + "updated_at": "2026-03-10T14:41:52.922Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-10T14:41:52.922Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolved_at": "2026-03-10T14:41:52.922Z", - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - }, - ], + { + "id": 3145802877, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-10 11:11:34.526408.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-10T11:11:35.508Z", + "updated_at": "2026-03-10T14:41:52.922Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": True, + "resolved_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "resolved_at": "2026-03-10T14:41:52.922Z", + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + }, + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -8812,46 +8872,49 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "id": 43921665, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43921665, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:23:16.980Z", + "updated_at": "2026-03-02T14:23:16.980Z", + "awardable_id": 3124015530, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T14:23:16.980Z", - "updated_at": "2026-03-02T14:23:16.980Z", - "awardable_id": 3124015530, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43921671, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43921671, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:23:20.949Z", + "updated_at": "2026-03-02T14:23:20.949Z", + "awardable_id": 3124015530, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T14:23:20.949Z", - "updated_at": "2026-03-02T14:23:20.949Z", - "awardable_id": 3124015530, - "awardable_type": "Note", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -8896,23 +8959,26 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": 44362951, - "name": "rocket", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "data": { + "id": 44362951, + "name": "rocket", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:03:43.499Z", + "updated_at": "2026-03-11T11:03:43.499Z", + "awardable_id": 3124015530, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-11T11:03:43.499Z", - "updated_at": "2026-03-11T11:03:43.499Z", - "awardable_id": 3124015530, - "awardable_type": "Note", - "url": None, + "headers": None, }, "meta": {}, }, @@ -9005,65 +9071,68 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 43921665, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43921665, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:23:16.980Z", + "updated_at": "2026-03-02T14:23:16.980Z", + "awardable_id": 3124015530, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T14:23:16.980Z", - "updated_at": "2026-03-02T14:23:16.980Z", - "awardable_id": 3124015530, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43921671, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43921671, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:23:20.949Z", + "updated_at": "2026-03-02T14:23:20.949Z", + "awardable_id": 3124015530, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T14:23:20.949Z", - "updated_at": "2026-03-02T14:23:20.949Z", - "awardable_id": 3124015530, - "awardable_type": "Note", - "url": None, - }, - { - "id": 44362951, - "name": "rocket", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 44362951, + "name": "rocket", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:03:43.499Z", + "updated_at": "2026-03-11T11:03:43.499Z", + "awardable_id": 3124015530, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-11T11:03:43.499Z", - "updated_at": "2026-03-11T11:03:43.499Z", - "awardable_id": 3124015530, - "awardable_type": "Note", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -9148,46 +9217,49 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "id": 43921665, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43921665, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:23:16.980Z", + "updated_at": "2026-03-02T14:23:16.980Z", + "awardable_id": 3124015530, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T14:23:16.980Z", - "updated_at": "2026-03-02T14:23:16.980Z", - "awardable_id": 3124015530, - "awardable_type": "Note", - "url": None, - }, - { - "id": 43921671, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43921671, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:23:20.949Z", + "updated_at": "2026-03-02T14:23:20.949Z", + "awardable_id": 3124015530, + "awardable_type": "Note", + "url": None, }, - "created_at": "2026-03-02T14:23:20.949Z", - "updated_at": "2026-03-02T14:23:20.949Z", - "awardable_id": 3124015530, - "awardable_type": "Note", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -9274,65 +9346,68 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 43923647, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43923647, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:52:40.410Z", + "updated_at": "2026-03-02T14:52:40.410Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:52:40.410Z", - "updated_at": "2026-03-02T14:52:40.410Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - { - "id": 43923656, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43923656, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:52:47.638Z", + "updated_at": "2026-03-02T14:52:47.638Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:52:47.638Z", - "updated_at": "2026-03-02T14:52:47.638Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - { - "id": 43923674, - "name": "tada", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43923674, + "name": "tada", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:53:00.711Z", + "updated_at": "2026-03-02T14:53:00.711Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:53:00.711Z", - "updated_at": "2026-03-02T14:53:00.711Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -9373,23 +9448,26 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": 44362995, - "name": "rocket", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "data": { + "id": 44362995, + "name": "rocket", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:04:13.218Z", + "updated_at": "2026-03-11T11:04:13.218Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-11T11:04:13.218Z", - "updated_at": "2026-03-11T11:04:13.218Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, + "headers": None, }, "meta": {}, }, @@ -9501,84 +9579,87 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 43923647, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43923647, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:52:40.410Z", + "updated_at": "2026-03-02T14:52:40.410Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:52:40.410Z", - "updated_at": "2026-03-02T14:52:40.410Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - { - "id": 43923656, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43923656, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:52:47.638Z", + "updated_at": "2026-03-02T14:52:47.638Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:52:47.638Z", - "updated_at": "2026-03-02T14:52:47.638Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - { - "id": 43923674, - "name": "tada", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43923674, + "name": "tada", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:53:00.711Z", + "updated_at": "2026-03-02T14:53:00.711Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:53:00.711Z", - "updated_at": "2026-03-02T14:53:00.711Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - { - "id": 44362995, - "name": "rocket", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 44362995, + "name": "rocket", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:04:13.218Z", + "updated_at": "2026-03-11T11:04:13.218Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-11T11:04:13.218Z", - "updated_at": "2026-03-11T11:04:13.218Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -9678,65 +9759,68 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": 43923647, - "name": "thumbsup", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43923647, + "name": "thumbsup", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:52:40.410Z", + "updated_at": "2026-03-02T14:52:40.410Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:52:40.410Z", - "updated_at": "2026-03-02T14:52:40.410Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - { - "id": 43923656, - "name": "dart", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43923656, + "name": "dart", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:52:47.638Z", + "updated_at": "2026-03-02T14:52:47.638Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:52:47.638Z", - "updated_at": "2026-03-02T14:52:47.638Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - { - "id": 43923674, - "name": "tada", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43923674, + "name": "tada", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T14:53:00.711Z", + "updated_at": "2026-03-02T14:53:00.711Z", + "awardable_id": 185129497, + "awardable_type": "Issue", + "url": None, }, - "created_at": "2026-03-02T14:53:00.711Z", - "updated_at": "2026-03-02T14:53:00.711Z", - "awardable_id": 185129497, - "awardable_type": "Issue", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -9799,46 +9883,49 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "id": 43924243, - "name": "thumbsdown", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43924243, + "name": "thumbsdown", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T15:00:37.869Z", + "updated_at": "2026-03-02T15:00:37.869Z", + "awardable_id": 459277081, + "awardable_type": "MergeRequest", + "url": None, }, - "created_at": "2026-03-02T15:00:37.869Z", - "updated_at": "2026-03-02T15:00:37.869Z", - "awardable_id": 459277081, - "awardable_type": "MergeRequest", - "url": None, - }, - { - "id": 43924251, - "name": "smiling_face_with_hearts", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43924251, + "name": "smiling_face_with_hearts", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T15:00:43.985Z", + "updated_at": "2026-03-02T15:00:43.985Z", + "awardable_id": 459277081, + "awardable_type": "MergeRequest", + "url": None, }, - "created_at": "2026-03-02T15:00:43.985Z", - "updated_at": "2026-03-02T15:00:43.985Z", - "awardable_id": 459277081, - "awardable_type": "MergeRequest", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -9879,23 +9966,26 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": 44363033, - "name": "rocket", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "data": { + "id": 44363033, + "name": "rocket", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:04:43.769Z", + "updated_at": "2026-03-11T11:04:43.769Z", + "awardable_id": 459277081, + "awardable_type": "MergeRequest", + "url": None, }, - "created_at": "2026-03-11T11:04:43.769Z", - "updated_at": "2026-03-11T11:04:43.769Z", - "awardable_id": 459277081, - "awardable_type": "MergeRequest", - "url": None, + "headers": None, }, "meta": {}, }, @@ -9967,81 +10057,84 @@ class ForwardToClientTest(NamedTuple): "url": None, }, ], - ), - ], - provider_return_value={ - "data": [ - { - "id": "43924243", - "content": "-1", - "author": {"id": "150871", "username": "jacquev6"}, - }, - { - "id": "44363033", - "content": "rocket", - "author": {"id": "150871", "username": "jacquev6"}, - }, - ], - "type": "gitlab", - "raw": [ - { - "id": 43924243, - "name": "thumbsdown", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-02T15:00:37.869Z", - "updated_at": "2026-03-02T15:00:37.869Z", - "awardable_id": 459277081, - "awardable_type": "MergeRequest", - "url": None, - }, - { - "id": 43924251, - "name": "smiling_face_with_hearts", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-02T15:00:43.985Z", - "updated_at": "2026-03-02T15:00:43.985Z", - "awardable_id": 459277081, - "awardable_type": "MergeRequest", - "url": None, - }, - { - "id": 44363033, - "name": "rocket", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T11:04:43.769Z", - "updated_at": "2026-03-11T11:04:43.769Z", - "awardable_id": 459277081, - "awardable_type": "MergeRequest", - "url": None, - }, - ], + ), + ], + provider_return_value={ + "data": [ + { + "id": "43924243", + "content": "-1", + "author": {"id": "150871", "username": "jacquev6"}, + }, + { + "id": "44363033", + "content": "rocket", + "author": {"id": "150871", "username": "jacquev6"}, + }, + ], + "type": "gitlab", + "raw": { + "data": [ + { + "id": 43924243, + "name": "thumbsdown", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T15:00:37.869Z", + "updated_at": "2026-03-02T15:00:37.869Z", + "awardable_id": 459277081, + "awardable_type": "MergeRequest", + "url": None, + }, + { + "id": 43924251, + "name": "smiling_face_with_hearts", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T15:00:43.985Z", + "updated_at": "2026-03-02T15:00:43.985Z", + "awardable_id": 459277081, + "awardable_type": "MergeRequest", + "url": None, + }, + { + "id": 44363033, + "name": "rocket", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:04:43.769Z", + "updated_at": "2026-03-11T11:04:43.769Z", + "awardable_id": 459277081, + "awardable_type": "MergeRequest", + "url": None, + }, + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -10117,46 +10210,49 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "id": 43924243, - "name": "thumbsdown", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + "raw": { + "data": [ + { + "id": 43924243, + "name": "thumbsdown", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T15:00:37.869Z", + "updated_at": "2026-03-02T15:00:37.869Z", + "awardable_id": 459277081, + "awardable_type": "MergeRequest", + "url": None, }, - "created_at": "2026-03-02T15:00:37.869Z", - "updated_at": "2026-03-02T15:00:37.869Z", - "awardable_id": 459277081, - "awardable_type": "MergeRequest", - "url": None, - }, - { - "id": 43924251, - "name": "smiling_face_with_hearts", - "user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", + { + "id": 43924251, + "name": "smiling_face_with_hearts", + "user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-02T15:00:43.985Z", + "updated_at": "2026-03-02T15:00:43.985Z", + "awardable_id": 459277081, + "awardable_type": "MergeRequest", + "url": None, }, - "created_at": "2026-03-02T15:00:43.985Z", - "updated_at": "2026-03-02T15:00:43.985Z", - "awardable_id": 459277081, - "awardable_type": "MergeRequest", - "url": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -10201,31 +10297,34 @@ class ForwardToClientTest(NamedTuple): "data": {"ref": "topics/blah", "sha": "7497e018d01503b6abc3053b7896266115e631f6"}, "type": "gitlab", "raw": { - "name": "topics/blah", - "commit": { - "id": "7497e018d01503b6abc3053b7896266115e631f6", - "short_id": "7497e018", - "created_at": "2026-03-05T12:15:50.000+01:00", - "parent_ids": ["6d8ca33dae268d3c5835e721e5702ef9dcb43c8c"], - "title": "Add content", - "message": "Add content\n", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-03-05T12:15:50.000+01:00", - "committer_name": "Vincent Jacques", - "committer_email": "vincent@vincent-jacques.net", - "committed_date": "2026-03-05T12:15:50.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/7497e018d01503b6abc3053b7896266115e631f6", + "data": { + "name": "topics/blah", + "commit": { + "id": "7497e018d01503b6abc3053b7896266115e631f6", + "short_id": "7497e018", + "created_at": "2026-03-05T12:15:50.000+01:00", + "parent_ids": ["6d8ca33dae268d3c5835e721e5702ef9dcb43c8c"], + "title": "Add content", + "message": "Add content\n", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-03-05T12:15:50.000+01:00", + "committer_name": "Vincent Jacques", + "committer_email": "vincent@vincent-jacques.net", + "committed_date": "2026-03-05T12:15:50.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/7497e018d01503b6abc3053b7896266115e631f6", + }, + "merged": False, + "protected": False, + "developers_can_push": False, + "developers_can_merge": False, + "can_push": True, + "default": False, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/tree/topics/blah", }, - "merged": False, - "protected": False, - "developers_can_push": False, - "developers_can_merge": False, - "can_push": True, - "default": False, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/tree/topics/blah", + "headers": None, }, "meta": {}, }, @@ -10281,31 +10380,34 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "name": "tests/20260311-110504", - "commit": { - "id": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "short_id": "0941ee0a", - "created_at": "2026-02-26T09:01:54.000+01:00", - "parent_ids": ["1403774c82d64068af027d0b5d0cc4f52473b6f2"], - "title": "Another", - "message": "Another\n", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-02-26T09:01:54.000+01:00", - "committer_name": "Vincent Jacques", - "committer_email": "vincent@vincent-jacques.net", - "committed_date": "2026-02-26T09:01:54.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "data": { + "name": "tests/20260311-110504", + "commit": { + "id": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "short_id": "0941ee0a", + "created_at": "2026-02-26T09:01:54.000+01:00", + "parent_ids": ["1403774c82d64068af027d0b5d0cc4f52473b6f2"], + "title": "Another", + "message": "Another\n", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-02-26T09:01:54.000+01:00", + "committer_name": "Vincent Jacques", + "committer_email": "vincent@vincent-jacques.net", + "committed_date": "2026-02-26T09:01:54.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + }, + "merged": False, + "protected": False, + "developers_can_push": False, + "developers_can_merge": False, + "can_push": True, + "default": False, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/tree/tests/20260311-110504", }, - "merged": False, - "protected": False, - "developers_can_push": False, - "developers_can_merge": False, - "can_push": True, - "default": False, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/tree/tests/20260311-110504", + "headers": None, }, "meta": {}, }, @@ -10354,31 +10456,34 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "name": "tests/20260311-110504", - "commit": { - "id": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "short_id": "0941ee0a", - "created_at": "2026-02-26T09:01:54.000+01:00", - "parent_ids": ["1403774c82d64068af027d0b5d0cc4f52473b6f2"], - "title": "Another", - "message": "Another\n", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-02-26T09:01:54.000+01:00", - "committer_name": "Vincent Jacques", - "committer_email": "vincent@vincent-jacques.net", - "committed_date": "2026-02-26T09:01:54.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "data": { + "name": "tests/20260311-110504", + "commit": { + "id": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "short_id": "0941ee0a", + "created_at": "2026-02-26T09:01:54.000+01:00", + "parent_ids": ["1403774c82d64068af027d0b5d0cc4f52473b6f2"], + "title": "Another", + "message": "Another\n", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-02-26T09:01:54.000+01:00", + "committer_name": "Vincent Jacques", + "committer_email": "vincent@vincent-jacques.net", + "committed_date": "2026-02-26T09:01:54.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + }, + "merged": False, + "protected": False, + "developers_can_push": False, + "developers_can_merge": False, + "can_push": True, + "default": False, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/tree/tests/20260311-110504", }, - "merged": False, - "protected": False, - "developers_can_push": False, - "developers_can_merge": False, - "can_push": True, - "default": False, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/tree/tests/20260311-110504", + "headers": None, }, "meta": {}, }, @@ -10416,17 +10521,20 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "file_name": "README.md", - "file_path": "README.md", - "size": 92, - "encoding": "base64", - "content_sha256": "34ecd6d09e3a9b3c386fcac36a83339c744154b3713d8d44d75fb0cd82f0b26a", - "ref": "main", - "blob_id": "d96986775b6793cac0a358b35650de94752a9530", - "commit_id": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "last_commit_id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", - "execute_filemode": False, - "content": "IyB0ZXN0LVNlbnRyeS1JbnRlZ3JhdGlvbi1EZXYtamFjcXVldjYKVGVzdCByZXBvIGZvciBteSBkZXZlbG9wbWVudHMgaW4gU2VudHJ5J3MgR2l0SHViIEFwcAo=", + "data": { + "file_name": "README.md", + "file_path": "README.md", + "size": 92, + "encoding": "base64", + "content_sha256": "34ecd6d09e3a9b3c386fcac36a83339c744154b3713d8d44d75fb0cd82f0b26a", + "ref": "main", + "blob_id": "d96986775b6793cac0a358b35650de94752a9530", + "commit_id": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "last_commit_id": "1403774c82d64068af027d0b5d0cc4f52473b6f2", + "execute_filemode": False, + "content": "IyB0ZXN0LVNlbnRyeS1JbnRlZ3JhdGlvbi1EZXYtamFjcXVldjYKVGVzdCByZXBvIGZvciBteSBkZXZlbG9wbWVudHMgaW4gU2VudHJ5J3MgR2l0SHViIEFwcAo=", + }, + "headers": None, }, "meta": {}, }, @@ -10529,25 +10637,8 @@ class ForwardToClientTest(NamedTuple): ], "type": "gitlab", "raw": { - "commit": { - "id": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "short_id": "6d8ca33d", - "created_at": "2026-02-26T09:47:45.000+01:00", - "parent_ids": ["0941ee0a9eac9914cfddf5adec7a9558a2f1c447"], - "title": "Add blah", - "message": "Add blah\n", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-02-26T09:47:45.000+01:00", - "committer_name": "Vincent Jacques", - "committer_email": "vincent@vincent-jacques.net", - "committed_date": "2026-02-26T09:47:45.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - }, - "commits": [ - { + "data": { + "commit": { "id": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", "short_id": "6d8ca33d", "created_at": "2026-02-26T09:47:45.000+01:00", @@ -10563,26 +10654,46 @@ class ForwardToClientTest(NamedTuple): "trailers": {}, "extended_trailers": {}, "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - } - ], - "diffs": [ - { - "diff": "", - "collapsed": False, - "too_large": False, - "new_path": "BLAH.md", - "old_path": "BLAH.md", - "a_mode": "0", - "b_mode": "100644", - "new_file": True, - "renamed_file": False, - "deleted_file": False, - "generated_file": None, - } - ], - "compare_timeout": False, - "compare_same_ref": False, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/compare/0941ee0a9eac9914cfddf5adec7a9558a2f1c447...6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + }, + "commits": [ + { + "id": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "short_id": "6d8ca33d", + "created_at": "2026-02-26T09:47:45.000+01:00", + "parent_ids": ["0941ee0a9eac9914cfddf5adec7a9558a2f1c447"], + "title": "Add blah", + "message": "Add blah\n", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-02-26T09:47:45.000+01:00", + "committer_name": "Vincent Jacques", + "committer_email": "vincent@vincent-jacques.net", + "committed_date": "2026-02-26T09:47:45.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + } + ], + "diffs": [ + { + "diff": "", + "collapsed": False, + "too_large": False, + "new_path": "BLAH.md", + "old_path": "BLAH.md", + "a_mode": "0", + "b_mode": "100644", + "new_file": True, + "renamed_file": False, + "deleted_file": False, + "generated_file": None, + } + ], + "compare_timeout": False, + "compare_same_ref": False, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/compare/0941ee0a9eac9914cfddf5adec7a9558a2f1c447...6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + }, + "headers": None, }, "meta": {"next_cursor": None}, }, @@ -10642,25 +10753,28 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "short_id": "6d8ca33d", - "created_at": "2026-02-26T09:47:45.000+01:00", - "parent_ids": ["0941ee0a9eac9914cfddf5adec7a9558a2f1c447"], - "title": "Add blah", - "message": "Add blah\n", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-02-26T09:47:45.000+01:00", - "committer_name": "Vincent Jacques", - "committer_email": "vincent@vincent-jacques.net", - "committed_date": "2026-02-26T09:47:45.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "stats": {"additions": 0, "deletions": 0, "total": 0}, - "status": None, - "project_id": 79787061, - "last_pipeline": None, + "data": { + "id": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "short_id": "6d8ca33d", + "created_at": "2026-02-26T09:47:45.000+01:00", + "parent_ids": ["0941ee0a9eac9914cfddf5adec7a9558a2f1c447"], + "title": "Add blah", + "message": "Add blah\n", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-02-26T09:47:45.000+01:00", + "committer_name": "Vincent Jacques", + "committer_email": "vincent@vincent-jacques.net", + "committed_date": "2026-02-26T09:47:45.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "stats": {"additions": 0, "deletions": 0, "total": 0}, + "status": None, + "project_id": 79787061, + "last_pipeline": None, + }, + "headers": None, }, "meta": {}, }, @@ -10702,21 +10816,24 @@ class ForwardToClientTest(NamedTuple): } ], "type": "gitlab", - "raw": [ - { - "diff": "@@ -0,0 +1,9 @@\n+1\n+2\n+3\n+4\n+5\n+6\n+7\n+8\n+9\n", - "collapsed": False, - "too_large": False, - "new_path": "BLAH.md", - "old_path": "BLAH.md", - "a_mode": "0", - "b_mode": "100644", - "new_file": True, - "renamed_file": False, - "deleted_file": False, - "generated_file": False, - } - ], + "raw": { + "data": [ + { + "diff": "@@ -0,0 +1,9 @@\n+1\n+2\n+3\n+4\n+5\n+6\n+7\n+8\n+9\n", + "collapsed": False, + "too_large": False, + "new_path": "BLAH.md", + "old_path": "BLAH.md", + "a_mode": "0", + "b_mode": "100644", + "new_file": True, + "renamed_file": False, + "deleted_file": False, + "generated_file": False, + } + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -10804,42 +10921,45 @@ class ForwardToClientTest(NamedTuple): }, ], "type": "gitlab", - "raw": [ - { - "id": "7497e018d01503b6abc3053b7896266115e631f6", - "short_id": "7497e018", - "created_at": "2026-03-05T12:15:50.000+01:00", - "parent_ids": ["6d8ca33dae268d3c5835e721e5702ef9dcb43c8c"], - "title": "Add content", - "message": "Add content\n", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-03-05T12:15:50.000+01:00", - "committer_name": "Vincent Jacques", - "committer_email": "vincent@vincent-jacques.net", - "committed_date": "2026-03-05T12:15:50.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/7497e018d01503b6abc3053b7896266115e631f6", - }, - { - "id": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "short_id": "6d8ca33d", - "created_at": "2026-02-26T09:47:45.000+01:00", - "parent_ids": ["0941ee0a9eac9914cfddf5adec7a9558a2f1c447"], - "title": "Add blah", - "message": "Add blah\n", - "author_name": "Vincent Jacques", - "author_email": "vincent@vincent-jacques.net", - "authored_date": "2026-02-26T09:47:45.000+01:00", - "committer_name": "Vincent Jacques", - "committer_email": "vincent@vincent-jacques.net", - "committed_date": "2026-02-26T09:47:45.000+01:00", - "trailers": {}, - "extended_trailers": {}, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - }, - ], + "raw": { + "data": [ + { + "id": "7497e018d01503b6abc3053b7896266115e631f6", + "short_id": "7497e018", + "created_at": "2026-03-05T12:15:50.000+01:00", + "parent_ids": ["6d8ca33dae268d3c5835e721e5702ef9dcb43c8c"], + "title": "Add content", + "message": "Add content\n", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-03-05T12:15:50.000+01:00", + "committer_name": "Vincent Jacques", + "committer_email": "vincent@vincent-jacques.net", + "committed_date": "2026-03-05T12:15:50.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/7497e018d01503b6abc3053b7896266115e631f6", + }, + { + "id": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "short_id": "6d8ca33d", + "created_at": "2026-02-26T09:47:45.000+01:00", + "parent_ids": ["0941ee0a9eac9914cfddf5adec7a9558a2f1c447"], + "title": "Add blah", + "message": "Add blah\n", + "author_name": "Vincent Jacques", + "author_email": "vincent@vincent-jacques.net", + "authored_date": "2026-02-26T09:47:45.000+01:00", + "committer_name": "Vincent Jacques", + "committer_email": "vincent@vincent-jacques.net", + "committed_date": "2026-02-26T09:47:45.000+01:00", + "trailers": {}, + "extended_trailers": {}, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/commit/6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + }, + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -10958,51 +11078,54 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": "c4604a0d82de5427ec0cdc8780c8f810ea9bec86", - "individual_note": False, - "notes": [ - { - "id": 3149948866, - "type": "DiffNote", - "body": "A review comment, on a file, made by the API on 2026-03-11 11:06:19.945026.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T11:06:21.007Z", - "updated_at": "2026-03-11T11:06:21.007Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", - }, - "resolvable": True, - "resolved": False, - "resolved_by": None, - "resolved_at": None, - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, - } - ], + "data": { + "id": "c4604a0d82de5427ec0cdc8780c8f810ea9bec86", + "individual_note": False, + "notes": [ + { + "id": 3149948866, + "type": "DiffNote", + "body": "A review comment, on a file, made by the API on 2026-03-11 11:06:19.945026.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:06:21.007Z", + "updated_at": "2026-03-11T11:06:21.007Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": False, + "resolved_by": None, + "resolved_at": None, + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, + } + ], + }, + "headers": None, }, "meta": {}, }, @@ -11078,45 +11201,48 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": 3149949479, - "type": "DiffNote", - "body": "A reply to the previous comment, made by the API on 2026-03-11 11:06:21.487947.", - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "created_at": "2026-03-11T11:06:31.033Z", - "updated_at": "2026-03-11T11:06:31.033Z", - "system": False, - "noteable_id": 459277081, - "noteable_type": "MergeRequest", - "project_id": 79787061, - "commit_id": None, - "position": { - "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", - "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", - "old_path": "BLAH.md", - "new_path": "BLAH.md", - "position_type": "file", + "data": { + "id": 3149949479, + "type": "DiffNote", + "body": "A reply to the previous comment, made by the API on 2026-03-11 11:06:21.487947.", + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "created_at": "2026-03-11T11:06:31.033Z", + "updated_at": "2026-03-11T11:06:31.033Z", + "system": False, + "noteable_id": 459277081, + "noteable_type": "MergeRequest", + "project_id": 79787061, + "commit_id": None, + "position": { + "base_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "start_sha": "0941ee0a9eac9914cfddf5adec7a9558a2f1c447", + "head_sha": "7497e018d01503b6abc3053b7896266115e631f6", + "old_path": "BLAH.md", + "new_path": "BLAH.md", + "position_type": "file", + }, + "resolvable": True, + "resolved": False, + "resolved_by": None, + "resolved_at": None, + "suggestions": [], + "confidential": False, + "internal": False, + "imported": False, + "imported_from": "none", + "noteable_iid": 1, + "commands_changes": {}, }, - "resolvable": True, - "resolved": False, - "resolved_by": None, - "resolved_at": None, - "suggestions": [], - "confidential": False, - "internal": False, - "imported": False, - "imported_from": "none", - "noteable_iid": 1, - "commands_changes": {}, + "headers": None, }, "meta": {}, }, @@ -12677,8 +12803,230 @@ class ForwardToClientTest(NamedTuple): "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", "web_url": "https://gitlab.com/jacquev6", }, - "closed_at": "2026-03-03T16:11:56.637Z", - "target_branch": "main", + "closed_at": "2026-03-03T16:11:56.637Z", + "target_branch": "main", + "source_branch": "topics/blih", + "user_notes_count": 0, + "upvotes": 0, + "downvotes": 0, + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "assignees": [], + "assignee": None, + "reviewers": [], + "source_project_id": 79787061, + "target_project_id": 79787061, + "labels": [], + "draft": False, + "imported": False, + "imported_from": "none", + "work_in_progress": False, + "milestone": None, + "merge_when_pipeline_succeeds": False, + "merge_status": "can_be_merged", + "detailed_merge_status": "not_open", + "merge_after": None, + "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "merge_commit_sha": None, + "squash_commit_sha": None, + "discussion_locked": None, + "should_remove_source_branch": None, + "force_remove_source_branch": True, + "prepared_at": "2026-03-03T16:11:56.264Z", + "reference": "!8", + "references": { + "short": "!8", + "relative": "!8", + "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!8", + }, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/8", + "time_stats": { + "time_estimate": 0, + "total_time_spent": 0, + "human_time_estimate": None, + "human_total_time_spent": None, + }, + "squash": False, + "squash_on_merge": False, + "task_completion_status": {"count": 0, "completed_count": 0}, + "has_conflicts": False, + "blocking_discussions_resolved": True, + "approvals_before_merge": None, + }, + ], + ), + ClientForwardedCall( + client_method="get_merge_requests", + client_args=("79787061",), + client_kwds={"state": "merged"}, + client_return_value=[ + { + "id": 464363971, + "iid": 27, + "project_id": 79787061, + "title": "Add blah", + "description": "", + "state": "merged", + "created_at": "2026-03-16T10:51:17.718Z", + "updated_at": "2026-03-16T10:52:00.413Z", + "merged_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "merge_user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "merged_at": "2026-03-16T10:52:00.510Z", + "closed_by": None, + "closed_at": None, + "target_branch": "develop", + "source_branch": "topics/blih", + "user_notes_count": 0, + "upvotes": 0, + "downvotes": 0, + "author": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "assignees": [], + "assignee": None, + "reviewers": [], + "source_project_id": 79787061, + "target_project_id": 79787061, + "labels": [], + "draft": False, + "imported": False, + "imported_from": "none", + "work_in_progress": False, + "milestone": None, + "merge_when_pipeline_succeeds": False, + "merge_status": "can_be_merged", + "detailed_merge_status": "not_open", + "merge_after": None, + "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + "merge_commit_sha": "539e15b113b9a05a9c92ee255f222a4e228fcc41", + "squash_commit_sha": None, + "discussion_locked": None, + "should_remove_source_branch": None, + "force_remove_source_branch": True, + "prepared_at": "2026-03-16T10:51:24.155Z", + "reference": "!27", + "references": { + "short": "!27", + "relative": "!27", + "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!27", + }, + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/27", + "time_stats": { + "time_estimate": 0, + "total_time_spent": 0, + "human_time_estimate": None, + "human_total_time_spent": None, + }, + "squash": False, + "squash_on_merge": False, + "task_completion_status": {"count": 0, "completed_count": 0}, + "has_conflicts": False, + "blocking_discussions_resolved": True, + "approvals_before_merge": None, + } + ], + ), + ], + provider_return_value={ + "data": [ + { + "id": "464363971", + "number": "27", + "title": "Add blah", + "body": None, + "state": "closed", + "base": {"ref": "develop", "sha": None}, + "head": { + "ref": "topics/blih", + "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + }, + "merged": True, + "html_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/27", + }, + { + "id": "464363971", + "number": "27", + "title": "Add blah", + "body": None, + "state": "closed", + "base": {"ref": "develop", "sha": None}, + "head": { + "ref": "topics/blih", + "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", + }, + "merged": True, + "html_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/27", + }, + ], + "type": "gitlab", + "raw": { + "data": [ + { + "id": 464363971, + "iid": 27, + "project_id": 79787061, + "title": "Add blah", + "description": "", + "state": "merged", + "created_at": "2026-03-16T10:51:17.718Z", + "updated_at": "2026-03-16T10:52:00.413Z", + "merged_by": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "merge_user": { + "id": 150871, + "username": "jacquev6", + "public_email": "", + "name": "Vincent Jacques", + "state": "active", + "locked": False, + "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", + "web_url": "https://gitlab.com/jacquev6", + }, + "merged_at": "2026-03-16T10:52:00.510Z", + "closed_by": None, + "closed_at": None, + "target_branch": "develop", "source_branch": "topics/blih", "user_notes_count": 0, "upvotes": 0, @@ -12709,19 +13057,19 @@ class ForwardToClientTest(NamedTuple): "detailed_merge_status": "not_open", "merge_after": None, "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "merge_commit_sha": None, + "merge_commit_sha": "539e15b113b9a05a9c92ee255f222a4e228fcc41", "squash_commit_sha": None, "discussion_locked": None, "should_remove_source_branch": None, "force_remove_source_branch": True, - "prepared_at": "2026-03-03T16:11:56.264Z", - "reference": "!8", + "prepared_at": "2026-03-16T10:51:24.155Z", + "reference": "!27", "references": { - "short": "!8", - "relative": "!8", - "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!8", + "short": "!27", + "relative": "!27", + "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!27", }, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/8", + "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/27", "time_stats": { "time_estimate": 0, "total_time_spent": 0, @@ -12735,13 +13083,6 @@ class ForwardToClientTest(NamedTuple): "blocking_discussions_resolved": True, "approvals_before_merge": None, }, - ], - ), - ClientForwardedCall( - client_method="get_merge_requests", - client_args=("79787061",), - client_kwds={"state": "merged"}, - client_return_value=[ { "id": 464363971, "iid": 27, @@ -12830,222 +13171,10 @@ class ForwardToClientTest(NamedTuple): "has_conflicts": False, "blocking_discussions_resolved": True, "approvals_before_merge": None, - } - ], - ), - ], - provider_return_value={ - "data": [ - { - "id": "464363971", - "number": "27", - "title": "Add blah", - "body": None, - "state": "closed", - "base": {"ref": "develop", "sha": None}, - "head": { - "ref": "topics/blih", - "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - }, - "merged": True, - "html_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/27", - }, - { - "id": "464363971", - "number": "27", - "title": "Add blah", - "body": None, - "state": "closed", - "base": {"ref": "develop", "sha": None}, - "head": { - "ref": "topics/blih", - "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - }, - "merged": True, - "html_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/27", - }, - ], - "type": "gitlab", - "raw": [ - { - "id": 464363971, - "iid": 27, - "project_id": 79787061, - "title": "Add blah", - "description": "", - "state": "merged", - "created_at": "2026-03-16T10:51:17.718Z", - "updated_at": "2026-03-16T10:52:00.413Z", - "merged_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "merge_user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "merged_at": "2026-03-16T10:52:00.510Z", - "closed_by": None, - "closed_at": None, - "target_branch": "develop", - "source_branch": "topics/blih", - "user_notes_count": 0, - "upvotes": 0, - "downvotes": 0, - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "assignees": [], - "assignee": None, - "reviewers": [], - "source_project_id": 79787061, - "target_project_id": 79787061, - "labels": [], - "draft": False, - "imported": False, - "imported_from": "none", - "work_in_progress": False, - "milestone": None, - "merge_when_pipeline_succeeds": False, - "merge_status": "can_be_merged", - "detailed_merge_status": "not_open", - "merge_after": None, - "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "merge_commit_sha": "539e15b113b9a05a9c92ee255f222a4e228fcc41", - "squash_commit_sha": None, - "discussion_locked": None, - "should_remove_source_branch": None, - "force_remove_source_branch": True, - "prepared_at": "2026-03-16T10:51:24.155Z", - "reference": "!27", - "references": { - "short": "!27", - "relative": "!27", - "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!27", - }, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/27", - "time_stats": { - "time_estimate": 0, - "total_time_spent": 0, - "human_time_estimate": None, - "human_total_time_spent": None, - }, - "squash": False, - "squash_on_merge": False, - "task_completion_status": {"count": 0, "completed_count": 0}, - "has_conflicts": False, - "blocking_discussions_resolved": True, - "approvals_before_merge": None, - }, - { - "id": 464363971, - "iid": 27, - "project_id": 79787061, - "title": "Add blah", - "description": "", - "state": "merged", - "created_at": "2026-03-16T10:51:17.718Z", - "updated_at": "2026-03-16T10:52:00.413Z", - "merged_by": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "merge_user": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "merged_at": "2026-03-16T10:52:00.510Z", - "closed_by": None, - "closed_at": None, - "target_branch": "develop", - "source_branch": "topics/blih", - "user_notes_count": 0, - "upvotes": 0, - "downvotes": 0, - "author": { - "id": 150871, - "username": "jacquev6", - "public_email": "", - "name": "Vincent Jacques", - "state": "active", - "locked": False, - "avatar_url": "https://secure.gravatar.com/avatar/64b276c831d40984ef60c18f9d8d046cffc9b20292e357df709b929a4dc3c188?s=80&d=identicon", - "web_url": "https://gitlab.com/jacquev6", - }, - "assignees": [], - "assignee": None, - "reviewers": [], - "source_project_id": 79787061, - "target_project_id": 79787061, - "labels": [], - "draft": False, - "imported": False, - "imported_from": "none", - "work_in_progress": False, - "milestone": None, - "merge_when_pipeline_succeeds": False, - "merge_status": "can_be_merged", - "detailed_merge_status": "not_open", - "merge_after": None, - "sha": "6d8ca33dae268d3c5835e721e5702ef9dcb43c8c", - "merge_commit_sha": "539e15b113b9a05a9c92ee255f222a4e228fcc41", - "squash_commit_sha": None, - "discussion_locked": None, - "should_remove_source_branch": None, - "force_remove_source_branch": True, - "prepared_at": "2026-03-16T10:51:24.155Z", - "reference": "!27", - "references": { - "short": "!27", - "relative": "!27", - "full": "jacquev6-sentry/test-sentry-integration-dev-jacquev6!27", - }, - "web_url": "https://gitlab.com/jacquev6-sentry/test-sentry-integration-dev-jacquev6/-/merge_requests/27", - "time_stats": { - "time_estimate": 0, - "total_time_spent": 0, - "human_time_estimate": None, - "human_total_time_spent": None, }, - "squash": False, - "squash_on_merge": False, - "task_completion_status": {"count": 0, "completed_count": 0}, - "has_conflicts": False, - "blocking_discussions_resolved": True, - "approvals_before_merge": None, - }, - ], + ], + "headers": None, + }, "meta": {"next_cursor": None}, }, ), @@ -13079,13 +13208,16 @@ class ForwardToClientTest(NamedTuple): }, "type": "gitlab", "raw": { - "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6", - "short_id": "6104942438c", - "title": "Sanitize for network graph", - "message": "Sanitize for network graph", - "author_name": "randx", - "author_email": "user@example.com", - "created_at": "2021-09-20T09:06:12.300+03:00", + "data": { + "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6", + "short_id": "6104942438c", + "title": "Sanitize for network graph", + "message": "Sanitize for network graph", + "author_name": "randx", + "author_email": "user@example.com", + "created_at": "2021-09-20T09:06:12.300+03:00", + }, + "headers": None, }, "meta": {}, }, @@ -13144,22 +13276,25 @@ class ForwardToClientTest(NamedTuple): "truncated": False, }, "type": "gitlab", - "raw": [ - { - "id": "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba", - "name": "html", - "type": "tree", - "path": "files/html", - "mode": "040000", - }, - { - "id": "4535904260b1082e14f867f7a24fd8c21495bde3", - "name": "images", - "type": "tree", - "path": "files/images", - "mode": "040000", - }, - ], + "raw": { + "data": [ + { + "id": "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba", + "name": "html", + "type": "tree", + "path": "files/html", + "mode": "040000", + }, + { + "id": "4535904260b1082e14f867f7a24fd8c21495bde3", + "name": "images", + "type": "tree", + "path": "files/images", + "mode": "040000", + }, + ], + "headers": None, + }, "meta": {}, }, ), From cef45a3f999d15283f48fe736510277b12effc78 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 27 Mar 2026 13:11:48 -0400 Subject: [PATCH 06/30] fix(explore): Contain traces table overflow (#111183) Contain the traces table scroll area inside the panel and switch the table layout to Scraps layout primitives. The overflow regression came from the traces table content escaping its panel boundary when the table needed horizontal scrolling. This keeps the scrollable area inside the panel while preserving the existing table structure. Also replaced the custom grid wrapper and header styling with `Container`, `Grid`, and a scoped header wrapper so the layout is expressed directly in the component tree. That makes the overflow behavior easier to reason about and avoids depending on a bespoke styled grid container. Refs EXP-845 Made with [Cursor](https://cursor.com) --- .../explore/tables/tracesTable/index.tsx | 123 +++++++++--------- .../explore/tables/tracesTable/styles.tsx | 11 +- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/static/app/views/explore/tables/tracesTable/index.tsx b/static/app/views/explore/tables/tracesTable/index.tsx index 454436c63b5273..9526f89b211781 100644 --- a/static/app/views/explore/tables/tracesTable/index.tsx +++ b/static/app/views/explore/tables/tracesTable/index.tsx @@ -3,7 +3,7 @@ import styled from '@emotion/styled'; import debounce from 'lodash/debounce'; import {Button} from '@sentry/scraps/button'; -import {Flex} from '@sentry/scraps/layout'; +import {Container, Flex, Grid} from '@sentry/scraps/layout'; import {ExternalLink} from '@sentry/scraps/link'; import {Tooltip} from '@sentry/scraps/tooltip'; @@ -43,7 +43,6 @@ import { StyledPanel, StyledPanelHeader, StyledPanelItem, - TracePanelContent, WrappingText, } from 'sentry/views/explore/tables/tracesTable/styles'; @@ -69,71 +68,73 @@ export function TracesTable({tracesTableResult}: TracesTableProps) { return ( - - - {t('Trace ID')} - + + + + {t('Trace ID')} + - - {t('Trace Root')} - + + {t('Trace Root')} + - - {query ? t('Matching Spans') : t('Total Spans')} - + + {query ? t('Matching Spans') : t('Total Spans')} + - - {t('Timeline')} - + + {t('Timeline')} + - - {t('Root Duration')} - + + {t('Root Duration')} + - - - {t('Timestamp')} - - - + + + {t('Timestamp')} + + + - {isPending && ( - - - - )} - {showErrorState && ( - - - - - - )} - {showEmptyState && ( - - - {t('No trace results found')} - - {tct('Try adjusting your filters or refer to [docSearchProps].', { - docSearchProps: ( - - {t('docs for search properties')} - - ), - })} - - - - )} - {data?.data?.map((trace, i) => ( - - ))} - + {isPending && ( + + + + )} + {showErrorState && ( + + + + + + )} + {showEmptyState && ( + + + {t('No trace results found')} + + {tct('Try adjusting your filters or refer to [docSearchProps].', { + docSearchProps: ( + + {t('docs for search properties')} + + ), + })} + + + + )} + {data?.data?.map((trace, i) => ( + + ))} + + { @@ -31,19 +32,17 @@ export function StyledPanelHeader({ {flexProps => ( - + {children} - + )} ); } -export const TracePanelContent = styled('div')` - width: 100%; - display: grid; - grid-template-columns: 116px auto repeat(3, min-content) 95px; +const TablePanelHeader = styled(PanelHeader)` + border-radius: 0; `; export const StyledPanelItem = styled(PanelItem)<{ From c57e28e2c8b79d32291c13aa0fb274007008263e Mon Sep 17 00:00:00 2001 From: Mihir-Mavalankar Date: Fri, 27 Mar 2026 10:12:17 -0700 Subject: [PATCH 07/30] fix(seer-explorer): Prevent optimistic state clearing on rethink with ame message (#111721) + When a user rethinks and re-sends the same message, the clearing effect was matching stale pre-truncation server blocks, causing deleted blocks to briefly reappear and the thinking indicator to vanish. Store the session updated_at as a baseline when setting optimistic state and skip the clearing effect until the server has actually processed the request. + Was introduced when fixing another bug in this PR: https://github.com/getsentry/sentry/pull/111685 Co-authored-by: Claude Sonnet 4 --- .../hooks/useSeerExplorer.spec.tsx | 50 +++++++++++++++++++ .../seerExplorer/hooks/useSeerExplorer.tsx | 8 ++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/static/app/views/seerExplorer/hooks/useSeerExplorer.spec.tsx b/static/app/views/seerExplorer/hooks/useSeerExplorer.spec.tsx index b48377fb76a0a0..41582af913dfec 100644 --- a/static/app/views/seerExplorer/hooks/useSeerExplorer.spec.tsx +++ b/static/app/views/seerExplorer/hooks/useSeerExplorer.spec.tsx @@ -222,5 +222,55 @@ describe('useSeerExplorer', () => { const blocks = result.current.sessionData?.blocks ?? []; expect(blocks.some(b => b.message.role === 'assistant' && b.loading)).toBe(true); }); + + it('keeps optimistic state when rethinking with the same message', async () => { + const chatUrl = `/organizations/${organization.slug}/seer/explorer-chat/`; + const ts = '2024-01-01T00:00:00Z'; + + MockApiClient.addMockResponse({url: chatUrl, method: 'GET', body: {session: null}}); + MockApiClient.addMockResponse({ + url: `${chatUrl}789/`, + method: 'GET', + body: { + session: { + blocks: [ + { + id: 'u0', + message: {role: 'user', content: 'hello'}, + timestamp: ts, + loading: false, + }, + { + id: 'a1', + message: {role: 'assistant', content: 'Hi!'}, + timestamp: ts, + loading: false, + }, + ], + run_id: 789, + status: 'completed', + updated_at: ts, + }, + }, + }); + MockApiClient.addMockResponse({ + url: `${chatUrl}789/`, + method: 'POST', + body: {run_id: 789}, + }); + + const {result} = renderHookWithProviders(() => useSeerExplorer(), {organization}); + + act(() => result.current.switchToRun(789)); + await waitFor(() => result.current.sessionData?.blocks?.length === 2); + + act(() => result.current.deleteFromIndex(0)); + await act(async () => { + await result.current.sendMessage('hello'); + }); + + expect(result.current.sessionData?.blocks?.some(b => b.loading)).toBe(true); + expect(result.current.deletedFromIndex).toBe(0); + }); }); }); diff --git a/static/app/views/seerExplorer/hooks/useSeerExplorer.tsx b/static/app/views/seerExplorer/hooks/useSeerExplorer.tsx index bf4200a326c6fa..f72bca47046201 100644 --- a/static/app/views/seerExplorer/hooks/useSeerExplorer.tsx +++ b/static/app/views/seerExplorer/hooks/useSeerExplorer.tsx @@ -148,6 +148,7 @@ export const useSeerExplorer = () => { const [optimistic, setOptimistic] = useState<{ assistantBlockId: string; assistantContent: string; + baselineUpdatedAt: string | undefined; insertIndex: number; userBlockId: string; userQuery: string; @@ -231,6 +232,7 @@ export const useSeerExplorer = () => { calculatedInsertIndex + 1 ), assistantContent: assistantContent || 'Thinking...', + baselineUpdatedAt: apiData?.session?.updated_at, }); try { @@ -450,6 +452,10 @@ export const useSeerExplorer = () => { return undefined; } + if (apiData?.session?.updated_at === optimistic.baselineUpdatedAt) { + return undefined; + } + const serverBlocks = apiData?.session?.blocks || []; const blockAtInsert = serverBlocks[optimistic.insertIndex]; @@ -471,7 +477,7 @@ export const useSeerExplorer = () => { } return undefined; - }, [apiData?.session?.blocks, optimistic]); + }, [apiData?.session?.blocks, apiData?.session?.updated_at, optimistic]); // Detect PR creation errors and show error messages useEffect(() => { From b8b22208be8ea636c51dfc7a1c273eca70209a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josh=20Goldberg=20=E2=9C=A8?= Date: Fri, 27 Mar 2026 13:18:30 -0400 Subject: [PATCH 08/30] ref(components): extracted a DragReorderButton component (#110982) As noted in https://github.com/getsentry/sentry/pull/110842#discussion_r2946355653, we have a lot of very similar drag-to-reorder buttons. This extracts a shared `DragReorderButton` component for all of them. One notable change: `style={{cursor: 'grab'}}` was only added in one existing component, under rules/uptime/assertions. Now it's in the shared one. ~I'm checking with design today and we might end up changing it - but I don't think the single cursor style should block review.~ Confirmed we prefer the grabby one. Fixes EXP-856 --- .../app/components/dnd/dragReorderButton.tsx | 28 +++++++++++++++++++ .../rules/uptime/assertions/opCommon.tsx | 9 ++---- .../rules/uptime/assertions/opGroup.tsx | 8 ++---- .../buildSteps/groupByStep/queryField.tsx | 20 ++++--------- .../common/sortableFieldWrapper.tsx | 17 ++--------- .../visualize/visualizeGhostField.tsx | 12 +++----- .../discover/table/columnEditCollection.tsx | 11 +++----- .../toolbar/toolbarGroupBy/index.tsx | 12 ++------ .../toolbar/toolbarVisualize/index.tsx | 10 ++----- .../toolbarVisualize/visualizeEquation.tsx | 10 ++----- .../tables/aggregateColumnEditorModal.tsx | 15 +++++----- .../explore/tables/columnEditorModal.tsx | 15 +++++----- 12 files changed, 71 insertions(+), 96 deletions(-) create mode 100644 static/app/components/dnd/dragReorderButton.tsx diff --git a/static/app/components/dnd/dragReorderButton.tsx b/static/app/components/dnd/dragReorderButton.tsx new file mode 100644 index 00000000000000..00e6b800816123 --- /dev/null +++ b/static/app/components/dnd/dragReorderButton.tsx @@ -0,0 +1,28 @@ +import {Button, type ButtonProps} from '@sentry/scraps/button'; + +import {IconGrabbable} from 'sentry/icons'; +import {t} from 'sentry/locale'; +import type {IconSize} from 'sentry/utils/theme'; + +type DragReorderButtonProps = Omit & { + iconSize?: IconSize; +}; + +export function DragReorderButton({ + size = 'zero', + iconSize = 'xs', + ref, + ...props +}: DragReorderButtonProps) { + return ( +