From 08b6294f47d1a8023ba24707bb14f63e6ae4f25a Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 18 Dec 2018 13:58:07 +0100 Subject: [PATCH 1/4] Pleroma-API.md: Import from /wikis/Pleroma-only-api-endpoints --- Pleroma-API.md | 26 ++++++++++++++++++++++++++ mix.exs | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 Pleroma-API.md diff --git a/Pleroma-API.md b/Pleroma-API.md new file mode 100644 index 000000000..cda3894f0 --- /dev/null +++ b/Pleroma-API.md @@ -0,0 +1,26 @@ +# Authentication + +Requests that require it can be authenticated with [an OAuth token](https://tools.ietf.org/html/rfc6749), the `_pleroma_key` cookie, or [HTTP Basic Authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization). + +# Request parameters + +Request parameters can be passed via [query strings](https://en.wikipedia.org/wiki/Query_string) or as [form data](https://www.w3.org/TR/html401/interact/forms.html). Files must be uploaded as `multipart/form-data`. + +# Endpoints + +## `/api/pleroma/emoji` +### Lists the custom emoji on that server. +* Method: `GET` +* Authentication: not required +* Params: none +* Response: JSON +* Example response: `{"kalsarikannit_f":"/finmoji/128px/kalsarikannit_f-128.png","perkele":"/finmoji/128px/perkele-128.png","blobdab":"/emoji/blobdab.png","happiness":"/finmoji/128px/happiness-128.png"}` + +## `/api/pleroma/follow_import` +### Imports your follows, for example from a Mastodon CSV file. +* Method: `POST` +* Authentication: required +* Params: + * `list`: STRING or FILE containing a whitespace-separated list of accounts to follow + * Response: HTTP 200 on success, 500 on error + * Note: Users that can't be followed are silently skipped. diff --git a/mix.exs b/mix.exs index e9705bcf9..4af896fc9 100644 --- a/mix.exs +++ b/mix.exs @@ -21,7 +21,7 @@ defmodule Pleroma.Mixfile do homepage_url: "https://pleroma.social/", docs: [ logo: "priv/static/static/logo.png", - extras: ["README.md", "config/config.md"], + extras: ["README.md", "config/config.md", "Pleroma-API.md"], main: "readme" ] ] From a6dfe1fc6b65ec406159a2e068ab598de2cc13e0 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 18 Dec 2018 17:05:36 +0100 Subject: [PATCH 2/4] Documentation: Move generated files to priv/static/doc, add it to endpoint.ex --- lib/pleroma/web/endpoint.ex | 2 +- mix.exs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex index d79f61b2e..564fc2c1d 100644 --- a/lib/pleroma/web/endpoint.ex +++ b/lib/pleroma/web/endpoint.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Web.Endpoint do at: "/", from: :pleroma, only: - ~w(index.html static finmoji emoji packs sounds images instance sw.js favicon.png schemas) + ~w(index.html static finmoji emoji packs sounds images instance sw.js favicon.png schemas doc) ) # Code reloading can be explicitly enabled under the diff --git a/mix.exs b/mix.exs index 4af896fc9..ff77f305f 100644 --- a/mix.exs +++ b/mix.exs @@ -22,7 +22,8 @@ defmodule Pleroma.Mixfile do docs: [ logo: "priv/static/static/logo.png", extras: ["README.md", "config/config.md", "Pleroma-API.md"], - main: "readme" + main: "readme", + output: "priv/static/doc" ] ] end From 6adea5a7b29289e88c39206338b2a9092159f4d1 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 18 Dec 2018 17:09:01 +0100 Subject: [PATCH 3/4] Move to docs --- Pleroma-API.md => docs/Pleroma-API.md | 0 {config => docs}/config.md | 0 mix.exs | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename Pleroma-API.md => docs/Pleroma-API.md (100%) rename {config => docs}/config.md (100%) diff --git a/Pleroma-API.md b/docs/Pleroma-API.md similarity index 100% rename from Pleroma-API.md rename to docs/Pleroma-API.md diff --git a/config/config.md b/docs/config.md similarity index 100% rename from config/config.md rename to docs/config.md diff --git a/mix.exs b/mix.exs index ff77f305f..99e30c2a2 100644 --- a/mix.exs +++ b/mix.exs @@ -21,7 +21,7 @@ defmodule Pleroma.Mixfile do homepage_url: "https://pleroma.social/", docs: [ logo: "priv/static/static/logo.png", - extras: ["README.md", "config/config.md", "Pleroma-API.md"], + extras: ["README.md", "docs/config.md", "docs/Pleroma-API.md"], main: "readme", output: "priv/static/doc" ] From d6b133ec51d53ae5ba878e150b9b377e7dab4a3a Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 18 Dec 2018 18:33:39 +0100 Subject: [PATCH 4/4] Pleroma-API.md: Additionnal endpoints --- docs/Pleroma-API.md | 73 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/docs/Pleroma-API.md b/docs/Pleroma-API.md index cda3894f0..84a5924fa 100644 --- a/docs/Pleroma-API.md +++ b/docs/Pleroma-API.md @@ -22,5 +22,74 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi * Authentication: required * Params: * `list`: STRING or FILE containing a whitespace-separated list of accounts to follow - * Response: HTTP 200 on success, 500 on error - * Note: Users that can't be followed are silently skipped. +* Response: HTTP 200 on success, 500 on error +* Note: Users that can't be followed are silently skipped. + +## `/api/pleroma/captcha` +### Get a new captcha +* Method: `GET` +* Authentication: not required +* Params: none +* Response: Provider specific JSON, the only guaranteed parameter is `type` +* Example response: `{"type": "kocaptcha", "token": "whatever", "url": "https://captcha.kotobank.ch/endpoint"}` + +## `/api/pleroma/delete_account` +### Delete an account +* Method `POST` +* Authentication: required +* Params: + * `password`: user's password +* Response: JSON. Returns `{"status": "success"}` if the deletion was successful, `{"error": "[error message]"}` otherwise +* Example response: `{"error": "Invalid password."}` + +## `/api/account/register` +### Register a new user +* Method `POST` +* Authentication: not required +* Params: + * `nickname` + * `fullname` + * `bio` + * `email` + * `password` + * `confirm` + * `captcha_solution`: optional, contains provider-specific captcha solution, + * `captcha_token`: optional, contains provider-specific captcha token +* Response: JSON. Returns a user object on success, otherwise returns `{"error": "error_msg"}` +* Example response: +``` +{ + "background_image": null, + "cover_photo": "https://pleroma.soykaf.com/images/banner.png", + "created_at": "Tue Dec 18 16:55:56 +0000 2018", + "default_scope": "public", + "description": "blushy-crushy fediverse idol + pleroma dev\nlet's be friends \nぷれろまの生徒会長。謎の外人。日本語OK. \n公主病.", + "description_html": "blushy-crushy fediverse idol + pleroma dev.
let's be friends
ぷれろまの生徒会長。謎の外人。日本語OK.
公主病.", + "favourites_count": 0, + "fields": [], + "followers_count": 0, + "following": false, + "follows_you": false, + "friends_count": 0, + "id": 6, + "is_local": true, + "locked": false, + "name": "lain", + "name_html": "lain", + "no_rich_text": false, + "pleroma": { + "tags": [] + }, + "profile_image_url": "https://pleroma.soykaf.com/images/avi.png", + "profile_image_url_https": "https://pleroma.soykaf.com/images/avi.png", + "profile_image_url_original": "https://pleroma.soykaf.com/images/avi.png", + "profile_image_url_profile_size": "https://pleroma.soykaf.com/images/avi.png", + "rights": { + "delete_others_notice": false + }, + "screen_name": "lain", + "statuses_count": 0, + "statusnet_blocking": false, + "statusnet_profile_url": "https://pleroma.soykaf.com/users/lain" +} +``` \ No newline at end of file