@ServiceRequestMapping(UPDATE_MEETING_INVITATION_REQUEST)
    public ClientRequestHandler handleUpdateMeetingInvitationRequest() {
        return clientRequest -> {
            UpdateMeetingInvitationRequest request = clientRequest.turmsRequest()
                    .getUpdateMeetingInvitationRequest();
            ResponseAction responseAction = request.getResponseAction();
            Mono<UpdateMeetingInvitationResult> updateMeetingInvitation =
                    conferenceService.authAndUpdateMeetingInvitation(clientRequest.userId(),
                            request.getMeetingId(),
                            request.hasPassword()
                                    ? request.getPassword()
                                    : null,
                            responseAction);
            if (notifyMeetingParticipantsOfMeetingInvitationUpdated) {
                return updateMeetingInvitation.flatMap(result -> {
                    if (!result.updated()) {
                        return Mono.just(RequestHandlerResult.OK);
                    }
                    var meeting = result.meeting();
                    return conferenceService
                            .queryMeetingParticipants(meeting.getUserId(), meeting.getGroupId())
                            .map(participantIds -> {
                                participantIds = CollectionUtil.remove(participantIds,
                                        clientRequest.userId());
                                TurmsNotification.Data response =
                                        responseAction == ResponseAction.ACCEPT
                                                ? ClientMessagePool
                                                        .getTurmsNotificationDataBuilder()
                                                        .setString(result.accessToken())
                                                        .build()
                                                : null;
                                if (participantIds.isEmpty() || !request.hasPassword()) {
                                    return RequestHandlerResult.of(response,
                                            true,
                                            participantIds,
                                            clientRequest.turmsRequest());
                                }
                                return RequestHandlerResult.of(response,
                                        participantIds,
                                        ClientMessagePool.getTurmsRequestBuilder()
                                                .mergeFrom(clientRequest.turmsRequest())
                                                .setUpdateMeetingInvitationRequest(ClientMessagePool
                                                        .getUpdateMeetingInvitationRequestBuilder()
                                                        .clearPassword()
                                                        .build())
                                                .build(),
                                        clientRequest.turmsRequest());
                            });
                });
            } else if (notifyRequesterOtherOnlineSessionsOfMeetingInvitationUpdated) {
                return updateMeetingInvitation.map(result -> result.updated()
                        ? RequestHandlerResult.of(responseAction == ResponseAction.ACCEPT
                                ? ClientMessagePool.getTurmsNotificationDataBuilder()
                                        .setString(result.accessToken())
                                        .build()
                                : null, true, Collections.emptySet(), clientRequest.turmsRequest())
                        : RequestHandlerResult.OK);
            }
            return updateMeetingInvitation
                    .map(result -> RequestHandlerResult.of(responseAction == ResponseAction.ACCEPT
                            ? ClientMessagePool.getTurmsNotificationDataBuilder()
                                    .setString(result.accessToken())
                                    .build()
                            : null));
        };

    }
@implNote We name it "update meeting invitation" instead of something like "query meeting
          access token", because the operation MAY have side effects according to different
          scenarios.
turms-service/src/main/java/im/turms/service/domain/conference/controller/ConferenceServiceController.java