commit: 27223fc5bcd5ba3bc5dc6769798635f7eac55c6c parent 8f9a139ba17fa99ca472d15023485290db0e8faf Author: nicole mikołajczyk <git@mkljczk.pl> Date: Wed, 15 Oct 2025 10:59:53 +0200 Add `write:scrobbles` and `read:scrobbles` scope for scrobbling Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>Diffstat:
5 files changed, 8 insertions(+), 6 deletions(-)diff --git a/changelog.d/scrobbles-scope.change b/changelog.d/scrobbles-scope.change@@ -0,0 +1 @@ +Add `write:scrobbles` and `read:scrobbles` scope for scrobblingdiff --git a/docs/development/API/pleroma_api.md b/docs/development/API/pleroma_api.md@@ -684,6 +684,7 @@ Audio scrobbling in Pleroma is **deprecated**. ### Creates a new Listen activity for an account * Method `POST` * Authentication: required +* OAuth scope: `write:scrobbles` * Params: * `title`: the title of the media playing * `album`: the album of the media playing [optional]diff --git a/lib/pleroma/web/api_spec/operations/pleroma_scrobble_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_scrobble_operation.ex@@ -20,7 +20,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaScrobbleOperation do %Operation{ tags: ["Scrobbles"], summary: "Creates a new Listen activity for an account", - security: [%{"oAuth" => ["write"]}], + security: [%{"oAuth" => ["write:scrobbles"]}], operationId: "PleromaAPI.ScrobbleController.create", deprecated: true, requestBody: request_body("Parameters", create_request(), required: true), @@ -39,7 +39,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaScrobbleOperation do parameters: [ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"} | pagination_params() ], - security: [%{"oAuth" => ["read"]}], + security: [%{"oAuth" => ["read:scrobbles"]}], responses: %{ 200 => Operation.response("Array of Scrobble", "application/json", %Schema{diff --git a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex@@ -16,10 +16,10 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleController do plug( OAuthScopesPlug, - %{scopes: ["read"], fallback: :proceed_unauthenticated} when action == :index + %{scopes: ["read:scrobbles"], fallback: :proceed_unauthenticated} when action == :index ) - plug(OAuthScopesPlug, %{scopes: ["write"]} when action == :create) + plug(OAuthScopesPlug, %{scopes: ["write:scrobbles"]} when action == :create) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaScrobbleOperationdiff --git a/test/pleroma/web/pleroma_api/controllers/scrobble_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/scrobble_controller_test.exs@@ -9,7 +9,7 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleControllerTest do describe "POST /api/v1/pleroma/scrobble" do test "works correctly" do - %{conn: conn} = oauth_access(["write"]) + %{conn: conn} = oauth_access(["write:scrobbles"]) conn = conn @@ -51,7 +51,7 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleControllerTest do describe "GET /api/v1/pleroma/accounts/:id/scrobbles" do test "works correctly" do - %{user: user, conn: conn} = oauth_access(["read"]) + %{user: user, conn: conn} = oauth_access(["read:scrobbles"]) {:ok, _activity} = CommonAPI.listen(user, %{