# ActivityPub Plugin

**URL:** https://meta.discourse.org/t/activitypub-plugin/266794
**Category:** Plugin
**Tags:** experimental, activitypub
**Created:** [May 31, 2023, 5:21pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794 "2023-05-31T17:21:52Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [June 5, 2023, 11:19am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/22 "2023-06-05T11:19:08Z")

</div>

@hellekin Thanks for the report. A certain amount of failed requests will always occur on an ActivityPub service as actors in the fediverse come and go. For example, it looks like

- The url [https://activitypub.example](https://activitypub.example) from the first log is not a real URL (did you change it?)
- The user [https://mas.to/users/rikvipcode](https://mas.to/users/rikvipcode) from the second log no longer exists
- The user [https://mastodon.social/users/ejovoni46709](https://mastodon.social/users/ejovoni46709) in the third log no longer exists

The verbosity of the logs are there to help debug, however if they’re cluttering your logs you can toggle them using the site setting `activity pub verbose logging`. The default is off.

We will be looking to make error handling improvements in phase two if necessary, but so far it looks like the snippets you posted are expected, i.e. the Actors are indeed no longer in the fediverse.

Currently, the way the plugin handles delivery failures is to track them in the same way Mastodon does, namely, if there are 7 days of failure to an endpoint it will be marked as “unavailable” and requests will no longer be attempted.

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [June 5, 2023, 4:12pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/23 "2023-06-05T16:12:34Z")

</div>

> [@angus](#):
>
> log is not a real URL (did you change it

Yes, as indicated in the line prior to it.

> [@angus](#):
>
> no longer exists

Indeed, but the status code is 410, which means the account may have moved (if there is a Tombstone — is this condition checked?)

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [June 5, 2023, 4:28pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/24 "2023-06-05T16:28:39Z")

</div>

> [@hellekin](#):
>
> the status code is 410, which means the account may have moved

No. It is error 410 Gone and means resource is deleted. What am I missing now?

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [June 5, 2023, 7:03pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/28 "2023-06-05T19:03:17Z")

</div>

You missed this:

> [@hellekin](#):
>
> Object retrieval SHOULD respond with 410 Gone status code if `Tombstone` is in response body, otherwise responds with 404 Not Found (`server:object-retrieval:deleted-object:410-status`)

---

<div class="post-metadata">

### Author: ![gme](https://avatars.discourse-cdn.com/v4/letter/g/5fc32e/32.png) [@gme](https://meta.discourse.org/u/gme)
#### Post date: [June 10, 2023, 2:44pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/29 "2023-06-10T14:44:35Z")

</div>

Hi @angus,

I just setup a brand new self-hosted discourse with your AP plugin over at [https://federation.cafe](https://federation.cafe), and am seeing some 403 errors in the Discourse Error Logs (and the posts aren’t sharing).

I’m wondering if it might be because there are hyphens maybe?

`[Discourse Activity Pub] GET request to https://bofh.social/internal/fetch failed: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(403 Forbidden)`

…

```plaintext
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/request.rb:66:in `rescue in perform'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/request.rb:50:in `perform'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/request.rb:34:in `get_json_ld'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/request.rb:106:in `get_json_ld'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/json_ld.rb:52:in `request_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/json_ld.rb:48:in `resolve_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/actor.rb:103:in `resolve_and_store'
/var/www/discourse/plugins/discourse-activity-pub/app/controllers/concerns/discourse_activity_pub/signature_verification.rb:192:in `actor_from_key_id'
/var/www/discourse/plugins/discourse-activity-pub/app/controllers/concerns/discourse_activity_pub/signature_verification.rb:57:in `signed_request_actor'
/var/www/discourse/plugins/discourse-activity-pub/app/controllers/concerns/discourse_activity_pub/signature_verification.rb:27:in `ensure_verified_signature'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:400:in `block in make_lambda'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:180:in `block (2 levels) in halting_and_conditional'
actionpack-7.0.4.3/lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:181:in `block in halting_and_conditional'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:595:in `block in invoke_before'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:595:in `each'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:595:in `invoke_before'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:116:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:418:in `block in with_resolved_locale'
i18n-1.14.1/lib/i18n.rb:322:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:418:in `with_resolved_locale'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack-7.0.4.3/lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack-7.0.4.3/lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack-7.0.4.3/lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport-7.0.4.3/lib/active_support/notifications.rb:206:in `block in instrument'
activesupport-7.0.4.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-7.0.4.3/lib/active_support/notifications.rb:206:in `instrument'
actionpack-7.0.4.3/lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack-7.0.4.3/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord-7.0.4.3/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-7.0.4.3/lib/abstract_controller/base.rb:151:in `process'
actionview-7.0.4.3/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-3.1.0/lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
actionpack-7.0.4.3/lib/action_controller/metal.rb:188:in `dispatch'
actionpack-7.0.4.3/lib/action_controller/metal.rb:251:in `dispatch'
actionpack-7.0.4.3/lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack-7.0.4.3/lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack-7.0.4.3/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-7.0.4.3/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-7.0.4.3/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-7.0.4.3/lib/action_dispatch/routing/route_set.rb:852:in `call'
railties-7.0.4.3/lib/rails/engine.rb:530:in `call'
railties-7.0.4.3/lib/rails/railtie.rb:226:in `public_send'
railties-7.0.4.3/lib/rails/railtie.rb:226:in `method_missing'
actionpack-7.0.4.3/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
actionpack-7.0.4.3/lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack-7.0.4.3/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-7.0.4.3/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-7.0.4.3/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-7.0.4.3/lib/action_dispatch/routing/route_set.rb:852:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
rack-2.2.7/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.7/lib/rack/conditional_get.rb:27:in `call'
rack-2.2.7/lib/rack/head.rb:12:in `call'
actionpack-7.0.4.3/lib/action_dispatch/http/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:367:in `call'
rack-2.2.7/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.7/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack-7.0.4.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
logster-2.12.2/lib/logster/middleware/reporter.rb:43:in `call'
railties-7.0.4.3/lib/rails/rack/logger.rb:40:in `call_app'
railties-7.0.4.3/lib/rails/rack/logger.rb:27:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/request_id.rb:26:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:24:in `call'
rack-2.2.7/lib/rack/method_override.rb:24:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.7/lib/rack/sendfile.rb:110:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler-3.1.0/lib/mini_profiler.rb:260:in `call'
message_bus-4.3.2/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:228:in `call'
railties-7.0.4.3/lib/rails/engine.rb:530:in `call'
railties-7.0.4.3/lib/rails/railtie.rb:226:in `public_send'
railties-7.0.4.3/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.7/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.7/lib/rack/urlmap.rb:58:in `each'
rack-2.2.7/lib/rack/urlmap.rb:58:in `call'
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

```

…

```plaintext
hostname	LILEJAP07-app
process_id	658
application_version	1abfe2e61d12b1b559aab0132ec3fb7cc8b87232
HTTP_HOST	federation.cafe
REQUEST_URI	/ap/actor/5ce52c043e670476a1426f9a66472c07
REQUEST_METHOD	GET
HTTP_USER_AGENT	Akkoma 3.8.0-0-gccae7ef; https://bofh.social <admin@bofh.social>
HTTP_ACCEPT	application/activity+json
HTTP_X_FORWARDED_FOR	91.107.215.39, 172.71.250.70
HTTP_X_REAL_IP	172.71.250.70
time	2:16 pm

```

Thoughts?

---

<div class="post-metadata">

### Author: ![bmann](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bmann/32/333739_2.png) [@bmann](https://meta.discourse.org/u/bmann)
#### Post date: [June 11, 2023, 9:21pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/30 "2023-06-11T21:21:39Z")

</div>

I also would be interested in full length posts. In which case, the “article” type should be used rather than “note”.

In fact, announcements are much less interesting to me than federated forum features.

Is there a roadmap and/or place to send donations for features like this?

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [June 12, 2023, 6:59am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/31 "2023-06-12T06:59:28Z")

</div>

Hey there @gme thanks for trying out the plugin

> [@gme](#):
>
> I just setup a brand new self-hosted discourse with your AP plugin over at [https://federation.cafe](https://federation.cafe), and am seeing some 403 errors in the Discourse Error Logs (and the posts aren’t sharing).

A few things to initially note here

1. The MVP plugin is tested against Mastodon. I see you’re using Pleroma there. I know Pleroma is ActivityPub compliant and works with Mastodon, however we haven’t looked closely at what tweaks might be required (if any) to ensure support for it yet. But still interested to see what’s going on here.

2. It looks like the requests failed due to an authentication error on your Pleroma server (that’s what a 403 error means). As I’m able to GET that endpoint just using an unauthenticated cURL request I suspect it might be the http auth that’s failing on the Pleroma end.

To test the latter (i.e. 2), could you have a look at your Pleroma logs (it looks like you’re the admin on that server too?) if possible to see if you can get more detail on that end of things?

> [@bmann](#):
>
> I also would be interested in full length posts. In which case, the “article” type should be used rather than “note”.

Thanks for the feedback @bmann. Could you expand on the use case you have in mind here? With an example if possible.

> [@bmann](#):
>
> Is there a roadmap and/or place to send donations for features like this?

This topic is the best place to keep abreast of developments. When we settle on a phase 2 plan I’ll share it here. In the meantime, the best way to help is to share specific use cases you are using, or would like to use, the plugin for.

---

<div class="post-metadata">

### Author: ![bmann](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bmann/32/333739_2.png) [@bmann](https://meta.discourse.org/u/bmann)
#### Post date: [June 12, 2023, 1:46pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/32 "2023-06-12T13:46:58Z")

</div>

The use case is using Discourse as a fuller AP node. There are many easier ways to post content to AP (eg use category RSS feeds and Zapier or Buffer) — but developing fuller AP capability can only be done as a plugin/integration.

Article is the ActivityStream type that is meant for full articles. Depending on the client interface, it will show a preview and then a click through to show the entire article inline (much like content warnings, but read more).

Note is the micro-blogging type.

By having full Article posts, people can directly read / boost / reply in their AP clients.

And of course, it would be interesting to hear about your roadmap if you’re going to follow a more Microblogging AP instance, or go in a federated forum direction like Lemmy or Kbin, especially given the recent Reddit news.

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [July 7, 2023, 8:07am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/33 "2023-07-07T08:07:55Z")

</div>

@angus, @pmusaraj have you seen [NGI Sargasso](https://socialhub.activitypub.rocks/t/ngi-sargasso-open-call-on-digital-identity/3355) funding open call? This is quite short notice but it might be useful to further development on this plugin (unless you have other plans already).

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [July 10, 2023, 6:43am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/34 "2023-07-10T06:43:58Z")

</div>

Hey guys, I’m happy to say that the second phase of work on this plugin has been approved. This is what we’ve already started work on, with the aim of releasing it in about 3.5 months.

Support editing Note post-publication

- Add support for [Update Activity](https://www.w3.org/TR/activitypub/#update-activity-inbox)

Support restoring Notes

- Add support for Undo of the [Delete Activity](https://www.w3.org/TR/activitypub/#delete-activity-inbox)

Support publishing posts publicly as well as followers only

- Category-level setting
- See further [Audience Targeting](https://www.w3.org/TR/activitystreams-vocabulary/#audienceTargeting) and Mastodon’s docs on [to/cc](https://docs.joinmastodon.org/spec/activitypub/)
- Switch to public posts as the default

Improve Note content parsing

- Handle special characters (perhaps use a different parser). [See further](https://meta.discourse.org/t/activitypub-plugin/266794/6).

Support use of [Article](https://www.w3.org/TR/activitystreams-vocabulary/#types) instead of [Note](https://www.w3.org/TR/activitystreams-vocabulary/#types) as the Object for a post.

- Category level setting

Support accepting Activities in reply to a Note made on remotes and publishing Activities in reply to a Note made in Discourse.

- Publish Activities concerning replies made on Discourse
  - Allow Discourse users to be Actors
  - Create Note objects for Discourse replies (posts)
  - Publish associated Create/Delete/Update/Undo Activities for their equivalent Discourse actions

- Accept Activities concerning replies made on remotes
  - Stage the Actors of Activities from remote servers as Discourse users
  - Create Discourse replies (posts) from Note objects
  - Convert associated Create/Delete/Update/Undo Activities into their equivalent Discourse actions

- Add a category setting to toggle between First Post only (current) and “Full Topic” which supports reply Activities.

Support Like Activity

- See [Activity Vocabulary](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-like)

Support Discourse users verifying their identity on Mastodon so Discourse posts created from their Toots are associated with their Discourse user account.

- Allow a user to perform the [Mastodon OAuth Authorization](https://docs.joinmastodon.org/spec/oauth/) flow with the Mastodon server where their account is stored. This is initiated from the user’s Discourse account settings.
- Using the Discourse user’s Mastodon access token, obtain and store the AP ID of their Mastodon account and store it with their Discourse account.
- Associate all Discourse activities associated with AP Activities from an Actor bearing a Discourse user’s AP ID with that Discourse user, whether they were performed before or after the user verified their identity.

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [July 11, 2023, 1:05am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/35 "2023-07-11T01:05:18Z")

</div>

This is really exciting to see — a really high level of federation and interactivity. 🎉

Are you planning to do any intermediate releases, or will this be one big release in ~3.5 months?

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [July 11, 2023, 7:04am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/36 "2023-07-11T07:04:12Z")

</div>

There may be some intermediate releases, but I can’t promise anything on that front yet. I’ll keep you in the loop as we go.

---

<div class="post-metadata">

### Author: ![ghutchis](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ghutchis/32/120320_2.png) [@ghutchis](https://meta.discourse.org/u/ghutchis)
#### Post date: [July 12, 2023, 5:07pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/37 "2023-07-12T17:07:34Z")

</div>

> [@mcdanlj](#):
>
> This is really exciting to see — a really high level of federation and interactivity.

110% agree - this includes a lot of great aspects. 🎉

Any chance there can at least be an intermediate release on this front?

> [@angus](#):
>
> Support publishing posts publicly as well as followers only
> 
> - Category-level setting
> - See further [Audience Targeting](https://www.w3.org/TR/activitystreams-vocabulary/#audienceTargeting) and Mastodon’s docs on [to/cc](https://docs.joinmastodon.org/spec/activitypub/)
> - Switch to public posts as the default

To be honest, adding a “public posts as the default” intermediate release would be immediately welcome.

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [July 12, 2023, 7:22pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/38 "2023-07-12T19:22:30Z")

</div>

Note that public posting would depend on federating edit actions (the first listed bullet), I believe.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [July 13, 2023, 8:36am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/39 "2023-07-13T08:36:34Z")

</div>

I can’t make any promises at this stage but there may well be intermediate updates for both Update federation and Audience Targeting (public posting).

---

<div class="post-metadata">

### Author: ![mattdm](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mattdm/32/216484_2.png) [@mattdm](https://meta.discourse.org/u/mattdm)
#### Post date: [July 13, 2023, 3:42pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/40 "2023-07-13T15:42:35Z")

</div>

> [@Getting ActivityPub error when trying to edit a post?](https://meta.discourse.org/t/getting-activitypub-error-when-trying-to-edit-a-post/271553):
>
> I tried to edit [Feature request: per-category reactions](https://meta.discourse.org/t/feature-request-per-category-reactions/271447/1), but got [An error occurred: Edit of an ActivityPub note after publication is not currently supported.] … which seems like a bug but is is also very exciting. What’s going on?

👀

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [July 13, 2023, 4:10pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/41 "2023-07-13T16:10:04Z")

</div>

That’s a known limitation. Until federating edits is supported, the plugin blocks edits to federated content, and there is no configuration to disable this.

---

<div class="post-metadata">

### Author: ![mattdm](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mattdm/32/216484_2.png) [@mattdm](https://meta.discourse.org/u/mattdm)
#### Post date: [July 13, 2023, 4:12pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/42 "2023-07-13T16:12:06Z")

</div>

To be clear, I was trying to edit _a post here on meta_ and got this error.

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [July 13, 2023, 4:25pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/43 "2023-07-13T16:25:48Z")

</div>

Oh, I’m sorry to have misunderstood. `@feature@meta.discourse.org` and `@announcements@meta.discourse.org` at least are being federated from here, and this choice is the number one reason I haven’t enabled this for Maker Forums…

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [July 14, 2023, 6:25am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/44 "2023-07-14T06:25:27Z")

</div>

Yes, this is the first item in Phase 2 that I’ve worked on. In fact, there’s already a PR for it, so you’ll get some relief on that front soonish.

[https://github.com/discourse/discourse-activity-pub/pull/14](https://github.com/discourse/discourse-activity-pub/pull/14)

[Previous page](https://meta.discourse.org/t/activitypub-plugin/266794.md?page=1)

[Next page](https://meta.discourse.org/t/activitypub-plugin/266794.md?page=3)
