Allow accessing your WordPress blog with Mastodon clients
GPL-2.0 License
Allow accessing your WordPress with Mastodon clients. Just enter your own blog URL as your instance.
Despite Mastodon implying that you would use this plugin for engaging on Mastodon (when you have enabled it for that, see below), the plugin is useful when installed on a plain WordPress.
When you use a Mastodon app, you'll enter your own blog URL to connect and log in to your blog in the following screens.
You'll then see just the posts on your blog which can already be useful in a multi-author environment (e.g. private blogs). You can also use that Mastodon app to create simple posts with a message + attachment(s) which can be better suited for your usecase than using the Gutenberg-capable WordPress mobile app.
When used in combination with the ActivityPub (for being followed via Mastodon) and Friends (for following people on Mastodon or via RSS) plugins, the Enable Mastodon Apps plugin will show you your feed of people you follow and you can follow and unfollow people from within the app.
Be aware that an app will have a post format associated (see the settings page). The plugin will check for the existance of the Friends plugin to find a resonable default (status with Friends plugin, standard otherwise). When you create a post with your Mastodon app, the post format that you selected for the app will be used.
The plugin has been tested with quite a number of Mastodon clients, among them are:
Many more, see the Third-party apps section on joinmastodon.org/apps. Each app might have its quirks, please report an issue when you have troubles. There is also a chance that the API has not been implemented yet (see below.)
The plugin implements the Mastodon API as documented on joinmastodon.org: The OAuth API for logging in (you will see your WordPress login screen when logging in to your Mastodon app, it also works with 2FA plugins) and the REST API for accessing your data.
Here is a list of endpoints and their implementation status:
GET /oauth/authorize
Authorize a user
POST /oauth/token
Obtain a token
POST /oauth/revoke
Revoke a token
GET /api/v1/emails/confirmation
Resend confirmation email
GET /api/v1/accounts
Register an account
POST /api/v1/apps
Create an application
GET /api/v1/apps/verify_credentials
Verify your app works
GET /api/v1/instance
View server information (v1!)GET /api/nodeinfo/2.0.json
(used by Pixelfed)GET /api/v1/announcements
(implemented as empty) View all announcements
POST /api/v1/announcements/:id/dismiss
Dismiss an announcement
POST /api/v1/announcements/:id/reactions/:name
Reactions to an announcement
GET /api/v1/filters
(implemented as empty)GET /api/v1/lists
(implemented as empty)GET /api/v1/custom_emojis
(implemented as empty) View all custom emojis
GET /api/v1/accounts/verify_credentials
Verify account credentials
PATCH /api/v1/accounts/update_credentials
Update account credentials
GET /api/v1/accounts/:id
Get account
GET /api/v1/accounts/:id/statuses
Get account’s statuses
GET /api/v1/accounts/:id/followers
Get account’s followers
GET /api/v1/accounts/:id/following
Get account’s following
GET /api/v1/accounts/:id/featured_tags
Get account’s featured tags
GET /api/v1/accounts/:id/lists
Get lists containing this account
GET /api/v1/accounts/:id/follow
Follow account
GET /api/v1/accounts/:id/unfollow
Unfollow account
GET /api/v1/accounts/relationships
Check relationships to other accounts
POST /api/v2/media
Upload media as an attachment (async)
GET /api/v1/media/:id
Get media attachment
POST /api/v1/statuses
Post a new status
GET /api/v1/statuses/:id/context
Get parent and child statuses in context
POST /api/v1/statuses/:id/favourite
Favourite a status
POST /api/v1/statuses/:id/unfavourite
Unfavourite a status
POST /api/v1/statuses/:id/reblog
Boost a status
POST /api/v1/statuses/:id/unreblog
Undo the boost a status
GET /api/v1/statuses/:id
View a single status
GET /api/v1/notifications/
(partial, just mentions) Get all notifications
GET /api/v1/notifications/:id
Get a single notification
POST /api/v1/notifications/clear
Dismiss all notification
POST /api/v1/notifications/:id/dismiss
Dismiss a single notification
GET /api/v1/timelines/home
View home timeline
GET /api/v1/timelines/public
View public timeline
GET /api/v1/markers
(implemented as empty) Get saved timeline positions
POST /api/v1/markers
Save your position in a timeline
GET /api/v2/search
(partial, accounts (local and exact match for remote) and statuses in the local db) Perform a search
Unmentioned endpoints are not implemented. Contributions welcome!
Endpoints around interacting with non-local users require the ActivityPub plugin. Following users requires the Friends plugin. Lists-related endpoints require the Friends Roles plugin.
api/v1/accounts/update_credentials
route by @mattwiebe (#157)