3月24日から、Discourse APIがリクエストに応答する方法に変更があったようです。
こちら側でコードの変更は行っておらず、Api-Keyも有効なままですが、ユーザー情報を取得しようとしているバックエンドサービスの一つが、users/by-external/{id}.jsonにヒットした際に失敗し始めました。
これらのリクエストには、ドキュメントによると必須であるはずのApi-KeyとApi-Usernameヘッダーを送信しています。これらのリクエストは長年正常に動作していました。
現在、このエンドポイントへのすべてリクエストは403エラーと以下のレスポンスボディで失敗します。
{
"errors": [
"You are not permitted to view the requested resource."
],
"error_type": "invalid_access"
}
/u/{username}.jsonをリクエストしようとしても同様に失敗します。
驚くべきことに、ヘッダーを送信しない場合、ドキュメントによるとこれらの認証ヘッダーが必要なはずのリクエストが、あたかも認証されているかのように、リクエストされたデータで応答します。
無効なApi-Keyを送信した場合も試しましたが、わずかに異なるメッセージで応答しました。
{
"errors": [
"You are not permitted to view the requested resource. The API username or key is invalid."
],
"error_type": "invalid_access"
}
これは、キーは受け入れられているが、誤ってリソースへのアクセスを許可していないと報告している一方で、認証されていないリクエストには完全なアクセスを許可していることを示しています。
すべてのユーザー/グローバルオプションを持つ新しいApi-Keyでもテストしましたが、結果は同じでした。