logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

differences_in_mastoapi_responses.md (7705B)


      1 # Differences in Mastodon API responses from vanilla Mastodon
      2 
      3 A Pleroma instance can be identified by "<Mastodon version> (compatible; Pleroma <version>)" present in `version` field in response from `/api/v1/instance`
      4 
      5 ## Flake IDs
      6 
      7 Pleroma uses 128-bit ids as opposed to Mastodon's 64 bits. However just like Mastodon's ids they are sortable strings
      8 
      9 ## Attachment cap
     10 
     11 Some apps operate under the assumption that no more than 4 attachments can be returned or uploaded. Pleroma however does not enforce any limits on attachment count neither when returning the status object nor when posting.
     12 
     13 ## Timelines
     14 
     15 Adding the parameter `with_muted=true` to the timeline queries will also return activities by muted (not by blocked!) users.
     16 
     17 ## Statuses
     18 
     19 - `visibility`: has an additional possible value `list`
     20 
     21 Has these additional fields under the `pleroma` object:
     22 
     23 - `local`: true if the post was made on the local instance
     24 - `conversation_id`: the ID of the AP context the status is associated with (if any)
     25 - `direct_conversation_id`: the ID of the Mastodon direct message conversation the status is associated with (if any)
     26 - `in_reply_to_account_acct`: the `acct` property of User entity for replied user (if any)
     27 - `content`: a map consisting of alternate representations of the `content` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain`
     28 - `spoiler_text`: a map consisting of alternate representations of the `spoiler_text` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain`
     29 - `expires_at`: a datetime (iso8601) that states when the post will expire (be deleted automatically), or empty if the post won't expire
     30 - `thread_muted`: true if the thread the post belongs to is muted
     31 
     32 ## Attachments
     33 
     34 Has these additional fields under the `pleroma` object:
     35 
     36 - `mime_type`: mime type of the attachment.
     37 
     38 ## Accounts
     39 
     40 The `id` parameter can also be the `nickname` of the user. This only works in these endpoints, not the deeper nested ones for following etc.
     41 
     42 - `/api/v1/accounts/:id`
     43 - `/api/v1/accounts/:id/statuses`
     44 
     45 Has these additional fields under the `pleroma` object:
     46 
     47 - `tags`: Lists an array of tags for the user
     48 - `relationship{}`: Includes fields as documented for Mastodon API https://docs.joinmastodon.org/api/entities/#relationship
     49 - `is_moderator`: boolean, nullable,  true if user is a moderator
     50 - `is_admin`: boolean, nullable, true if user is an admin
     51 - `confirmation_pending`: boolean, true if a new user account is waiting on email confirmation to be activated
     52 - `hide_followers`: boolean, true when the user has follower hiding enabled
     53 - `hide_follows`: boolean, true when the user has follow hiding enabled
     54 - `hide_followers_count`: boolean, true when the user has follower stat hiding enabled
     55 - `hide_follows_count`: boolean, true when the user has follow stat hiding enabled
     56 - `settings_store`: A generic map of settings for frontends. Opaque to the backend. Only returned in `verify_credentials` and `update_credentials`
     57 - `chat_token`: The token needed for Pleroma chat. Only returned in `verify_credentials`
     58 - `deactivated`: boolean, true when the user is deactivated
     59 
     60 ### Source
     61 
     62 Has these additional fields under the `pleroma` object:
     63 
     64 - `show_role`: boolean, nullable, true when the user wants his role (e.g admin, moderator) to be shown
     65 - `no_rich_text` - boolean, nullable, true when html tags are stripped from all statuses requested from the API
     66 
     67 ## Conversations
     68 
     69 Has an additional field under the `pleroma` object:
     70 
     71 - `recipients`: The list of the recipients of this Conversation. These will be addressed when replying to this conversation.
     72 
     73 ## Account Search
     74 
     75 Behavior has changed:
     76 
     77 - `/api/v1/accounts/search`: Does not require authentication
     78 
     79 
     80 ## Notifications
     81 
     82 Has these additional fields under the `pleroma` object:
     83 
     84 - `is_seen`: true if the notification was read by the user
     85 
     86 ## POST `/api/v1/statuses`
     87 
     88 Additional parameters can be added to the JSON body/Form data:
     89 
     90 - `preview`: boolean, if set to `true` the post won't be actually posted, but the status entitiy would still be rendered back. This could be useful for previewing rich text/custom emoji, for example.
     91 - `content_type`: string, contain the MIME type of the status, it is transformed into HTML by the backend. You can get the list of the supported MIME types with the nodeinfo endpoint.
     92 - `to`: A list of nicknames (like `lain@soykaf.club` or `lain` on the local server) that will be used to determine who is going to be addressed by this post. Using this will disable the implicit addressing by mentioned names in the `status` body, only the people in the `to` list will be addressed. The normal rules for for post visibility are not affected by this and will still apply.
     93 - `visibility`: string, besides standard MastoAPI values (`direct`, `private`, `unlisted` or `public`) it can be used to address a List by setting it to `list:LIST_ID`.
     94 - `expires_in`: The number of seconds the posted activity should expire in. When a posted activity expires it will be deleted from the server, and a delete request for it will be federated. This needs to be longer than an hour.
     95 - `in_reply_to_conversation_id`: Will reply to a given conversation, addressing only the people who are part of the recipient set of that conversation. Sets the visibility to `direct`.
     96 
     97 ## GET `/api/v1/statuses`
     98 
     99 An endpoint to get multiple statuses by IDs.
    100 
    101 Required parameters:
    102 
    103 - `ids`: array of activity ids
    104 
    105 Usage example: `GET /api/v1/statuses/?ids[]=1&ids[]=2`.
    106 
    107 Returns: array of Status.
    108 
    109 The maximum number of statuses is limited to 100 per request.
    110 
    111 ## PATCH `/api/v1/update_credentials`
    112 
    113 Additional parameters can be added to the JSON body/Form data:
    114 
    115 - `no_rich_text` - if true, html tags are stripped from all statuses requested from the API
    116 - `hide_followers` - if true, user's followers will be hidden
    117 - `hide_follows` - if true, user's follows will be hidden
    118 - `hide_followers_count` - if true, user's follower count will be hidden
    119 - `hide_follows_count` - if true, user's follow count will be hidden
    120 - `hide_favorites` - if true, user's favorites timeline will be hidden
    121 - `show_role` - if true, user's role (e.g admin, moderator) will be exposed to anyone in the API
    122 - `default_scope` - the scope returned under `privacy` key in Source subentity
    123 - `pleroma_settings_store` - Opaque user settings to be saved on the backend.
    124 - `skip_thread_containment` - if true, skip filtering out broken threads
    125 - `pleroma_background_image` - sets the background image of the user.
    126 
    127 ### Pleroma Settings Store
    128 Pleroma has mechanism that allows frontends to save blobs of json for each user on the backend. This can be used to save frontend-specific settings for a user that the backend does not need to know about.
    129 
    130 The parameter should have a form of `{frontend_name: {...}}`, with `frontend_name` identifying your type of client, e.g. `pleroma_fe`. It will overwrite everything under this property, but will not overwrite other frontend's settings.
    131 
    132 This information is returned in the `verify_credentials` endpoint.
    133 
    134 ## Authentication
    135 
    136 *Pleroma supports refreshing tokens.
    137 
    138 `POST /oauth/token`
    139 Post here request with grant_type=refresh_token to obtain new access token. Returns an access token.
    140 
    141 ## Account Registration
    142 `POST /api/v1/accounts`
    143 
    144 Has theses additionnal parameters (which are the same as in Pleroma-API):
    145     * `fullname`: optional
    146     * `bio`: optional
    147     * `captcha_solution`: optional, contains provider-specific captcha solution,
    148     * `captcha_token`: optional, contains provider-specific captcha token
    149     * `token`: invite token required when the registerations aren't public.