Merge Users の API コールが利用可能になりましたが、どのように呼び出せばよいですか?

こんにちは、

昨日「Merge Users プラグインをプログラムから呼び出す」に関するトピック(現在はクローズ済み)を作成しました。Rafael 氏に親切にもリリースノートを紹介いただき、その中でプラグインに UI が追加されたことに触れられていました(https://meta.discourse.org/t/discourse-2-5-0-beta3-release-notes/148766)。残念ながら、Discourse API の知識が不足しており、これを API 呼び出しに変換することができません。これは、当社のアプリケーションから比較的頻繁に行う必要がある処理です。ご助力いただけますでしょうか。

あらかじめありがとうございます、

Mark Pemburn
Blue Ocean Ideas

ボタンは、ユーザーの管理ページの下部に表示されます。

image

ブラウザの開発者ツールを開いて操作すると、実行する必要があるリクエストが表示されます。

こんにちは、ケーンさん。

ヒントをありがとうございます!サンドボックスの Discourse でユーザーを作成するのに少し時間がかかりましたが、本日ようやく作成することができました。開発ツールの Network パネルから得た情報を基に、Postman を使ってそれを再現しようと試みました。使用した値は以下の通りです。

メソッド: POST
エンドポイント: https://my-discourse-sandbox/admin/users/{source user ID}/merge.json

ヘッダー:

Content-Type: multipart/form-data
Accept: application/json

パラメータ:

Api-Key: {UI を介して作成}
Api-Username: system
context: /admin/users/{source user ID}/{source username}
target_username: {target username}

レスポンスは以下の通りでした:

    {
        "errors": [
            "The requested URL or resource could not be found."
        ],
        "error_type": "not_found"
    }

私が間違っている箇所について、何かご存知でしょうか?

一見すると、すべて正しいようです。target_username の値が存在するか確認しましたか?

Kane さん、

はい、ソースとターゲットの両方とも現在のユーザーです。ヘッダーを削除すると、「Oops! そのページは存在しないか、非公開です。」という HTML ページが返ってきます。「ページが存在しない」という部分は 404 エラーとして理解できますが、「非公開」という表現が何を意味するのかはわかりません。

Mark

@mpemburn これで成功しましたか?

メーリングリストを Discourse インスタンスに移行しています。多くの人が異なるメールアドレスを使用していたため、転送により、実際の人物ごとに多くのステージング済みユーザーが作成されます。API を介してユーザーのマージを自動化したいと思います。