public static BeginQuorumEpochRequestData singletonBeginQuorumEpochRequest(
        TopicPartition topicPartition,
        String clusterId,
        int leaderEpoch,
        int leaderId,
        Endpoints leaderEndpoints,
        ReplicaKey voterKey
    ) {
        return new BeginQuorumEpochRequestData()
            .setClusterId(clusterId)
            .setVoterId(voterKey.id())
            .setTopics(
                Collections.singletonList(
                    new BeginQuorumEpochRequestData.TopicData()
                        .setTopicName(topicPartition.topic())
                        .setPartitions(
                            Collections.singletonList(
                                new BeginQuorumEpochRequestData.PartitionData()
                                    .setPartitionIndex(topicPartition.partition())
                                    .setLeaderEpoch(leaderEpoch)
                                    .setLeaderId(leaderId)
                                    .setVoterDirectoryId(voterKey.directoryId().orElse(ReplicaKey.NO_DIRECTORY_ID))
                            )
                        )
                )
            )
            .setLeaderEndpoints(leaderEndpoints.toBeginQuorumEpochRequest());
    }
Creates a FetchSnapshotResponseData with a single PartitionSnapshot for the topic partition.

The partition index will already be populated when calling operator.

@param listenerName the listener used to accept the request
@param apiVersion the api version of the request
@param topicPartition the topic partition to include
@param leaderId the id of the leader
@param endpoints the endpoints of the leader
@param operator unary operator responsible for populating all of the appropriate fields
@return the created fetch snapshot response data
raft/src/main/java/org/apache/kafka/raft/RaftUtil.java