## Is your feature request related to a problem?

/api/person/merge currently performs a merge of two people. This logic is duplicated between app and plugin-server, badly.

## Describe the solution you'd like

Avoid duplicating, send a message to plugin-server

## Describe alternatives you've considered

Duplicating tricky and race-condition-heavy logic.

## Additional context

cc @yakkomajuri this is worth adding to team extensibility backlog - pretty sure this will cause bad correctness issues.

#### *Thank you* for your feature request – we love each and every one!

posthog/api/test/test_person.py
person3 = person_factory(team=self.team, distinct_ids=["3"], properties={"oh": "hello"})
            person1 = person_factory(
                team=self.team, distinct_ids=["1"], properties={"$browser": "whatever", "$os": "Mac OS X"}
            )
            person2 = person_factory(team=self.team, distinct_ids=["2"], properties={"random_prop": "asdf"})
            response = self.client.post("/api/person/%s/merge/" % person1.pk, {"ids": [person2.pk, person3.pk]},)
            self.assertEqual(response.status_code, 201)
            self.assertEqual(response.json()["created_at"].replace("Z", "+00:00"), person3.created_at.isoformat())
            self.assertEqual(response.json()["distinct_ids"], ["3", "1", "2"])
            person = get_people()
            self.assertEqual(len(person), 1)
            self.assertEqual(
                person[0].properties, {"$browser": "whatever", "$os": "Mac OS X", "random_prop": "asdf", "oh": "hello"}
            )
            self.assertEqual(person[0].created_at, person3.created_at)
        def test_return_non_anonymous_name(self) -> None:
            person_factory(
                team=self.team,
                distinct_ids=["distinct_id1", "17787c3099427b-0e8f6c86323ea9-33647309-1aeaa0-17787c30995b7c"],
            )
            person_factory(
                team=self.team, distinct_ids=["17787c327b-0e8f623ea9-336473-1aeaa0-17787c30995b7c", "distinct_id2"],
            )
            response = self.client.get("/api/person/").json()
            self.assertEqual(response["results"][0]["name"], "distinct_id2")
            self.assertEqual(response["results"][1]["name"], "distinct_id1")
            self.assertEqual(
                response["results"][0]["distinct_ids"],