Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into remake-remodel-dms
[akkoma] / lib / pleroma / web / api_spec / schemas / status.ex
index 486c3a0fe2130b9947db4e0aea988b996f469827..2572c964141da52e14a6a6d5b6b67fc10c287e39 100644 (file)
@@ -5,8 +5,11 @@
 defmodule Pleroma.Web.ApiSpec.Schemas.Status do
   alias OpenApiSpex.Schema
   alias Pleroma.Web.ApiSpec.Schemas.Account
-  alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji
+  alias Pleroma.Web.ApiSpec.Schemas.Attachment
+  alias Pleroma.Web.ApiSpec.Schemas.Emoji
+  alias Pleroma.Web.ApiSpec.Schemas.FlakeID
   alias Pleroma.Web.ApiSpec.Schemas.Poll
+  alias Pleroma.Web.ApiSpec.Schemas.Tag
   alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
 
   require OpenApiSpex
@@ -21,7 +24,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
         type: :object,
         properties: %{
           name: %Schema{type: :string},
-          website: %Schema{type: :string, nullable: true}
+          website: %Schema{type: :string, nullable: true, format: :uri}
         }
       },
       bookmarked: %Schema{type: :boolean},
@@ -29,42 +32,27 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
         type: :object,
         nullable: true,
         properties: %{
-          type: %Schema{type: :string},
-          provider_name: %Schema{type: :string},
-          provider_url: %Schema{type: :string},
-          url: %Schema{type: :string},
-          image: %Schema{type: :string},
+          type: %Schema{type: :string, enum: ["link", "photo", "video", "rich"]},
+          provider_name: %Schema{type: :string, nullable: true},
+          provider_url: %Schema{type: :string, format: :uri},
+          url: %Schema{type: :string, format: :uri},
+          image: %Schema{type: :string, nullable: true, format: :uri},
           title: %Schema{type: :string},
           description: %Schema{type: :string}
         }
       },
-      content: %Schema{type: :string},
+      content: %Schema{type: :string, format: :html},
       created_at: %Schema{type: :string, format: "date-time"},
-      emojis: %Schema{type: :array, items: AccountEmoji},
+      emojis: %Schema{type: :array, items: Emoji},
       favourited: %Schema{type: :boolean},
       favourites_count: %Schema{type: :integer},
-      id: %Schema{type: :string},
+      id: FlakeID,
       in_reply_to_account_id: %Schema{type: :string, nullable: true},
       in_reply_to_id: %Schema{type: :string, nullable: true},
       language: %Schema{type: :string, nullable: true},
       media_attachments: %Schema{
         type: :array,
-        items: %Schema{
-          type: :object,
-          properties: %{
-            id: %Schema{type: :string},
-            url: %Schema{type: :string},
-            remote_url: %Schema{type: :string},
-            preview_url: %Schema{type: :string},
-            text_url: %Schema{type: :string},
-            description: %Schema{type: :string},
-            type: %Schema{type: :string, enum: ["image", "video", "audio", "unknown"]},
-            pleroma: %Schema{
-              type: :object,
-              properties: %{mime_type: %Schema{type: :string}}
-            }
-          }
-        }
+        items: Attachment
       },
       mentions: %Schema{
         type: :array,
@@ -74,7 +62,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
             id: %Schema{type: :string},
             acct: %Schema{type: :string},
             username: %Schema{type: :string},
-            url: %Schema{type: :string}
+            url: %Schema{type: :string, format: :uri}
           }
         }
       },
@@ -85,7 +73,12 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
         properties: %{
           content: %Schema{type: :object, additionalProperties: %Schema{type: :string}},
           conversation_id: %Schema{type: :integer},
-          direct_conversation_id: %Schema{type: :string, nullable: true},
+          direct_conversation_id: %Schema{
+            type: :integer,
+            nullable: true,
+            description:
+              "The ID of the Mastodon direct message conversation the status is associated with (if any)"
+          },
           emoji_reactions: %Schema{
             type: :array,
             items: %Schema{
@@ -114,114 +107,103 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
       replies_count: %Schema{type: :integer},
       sensitive: %Schema{type: :boolean},
       spoiler_text: %Schema{type: :string},
-      tags: %Schema{
-        type: :array,
-        items: %Schema{
-          type: :object,
-          properties: %{
-            name: %Schema{type: :string},
-            url: %Schema{type: :string}
-          }
-        }
-      },
-      uri: %Schema{type: :string},
-      url: %Schema{type: :string},
+      tags: %Schema{type: :array, items: Tag},
+      uri: %Schema{type: :string, format: :uri},
+      url: %Schema{type: :string, nullable: true, format: :uri},
       visibility: VisibilityScope
     },
     example: %{
-      "JSON" => %{
-        "account" => %{
-          "acct" => "nick6",
-          "avatar" => "http://localhost:4001/images/avi.png",
-          "avatar_static" => "http://localhost:4001/images/avi.png",
-          "bot" => false,
-          "created_at" => "2020-04-07T19:48:51.000Z",
-          "display_name" => "Test テスト User 6",
-          "emojis" => [],
-          "fields" => [],
-          "followers_count" => 1,
-          "following_count" => 0,
-          "header" => "http://localhost:4001/images/banner.png",
-          "header_static" => "http://localhost:4001/images/banner.png",
-          "id" => "9toJCsKN7SmSf3aj5c",
-          "locked" => false,
-          "note" => "Tester Number 6",
-          "pleroma" => %{
-            "background_image" => nil,
-            "confirmation_pending" => false,
-            "hide_favorites" => true,
-            "hide_followers" => false,
-            "hide_followers_count" => false,
-            "hide_follows" => false,
-            "hide_follows_count" => false,
-            "is_admin" => false,
-            "is_moderator" => false,
-            "relationship" => %{
-              "blocked_by" => false,
-              "blocking" => false,
-              "domain_blocking" => false,
-              "endorsed" => false,
-              "followed_by" => false,
-              "following" => true,
-              "id" => "9toJCsKN7SmSf3aj5c",
-              "muting" => false,
-              "muting_notifications" => false,
-              "requested" => false,
-              "showing_reblogs" => true,
-              "subscribing" => false
-            },
-            "skip_thread_containment" => false,
-            "tags" => []
-          },
-          "source" => %{
-            "fields" => [],
-            "note" => "Tester Number 6",
-            "pleroma" => %{"actor_type" => "Person", "discoverable" => false},
-            "sensitive" => false
-          },
-          "statuses_count" => 1,
-          "url" => "http://localhost:4001/users/nick6",
-          "username" => "nick6"
-        },
-        "application" => %{"name" => "Web", "website" => nil},
-        "bookmarked" => false,
-        "card" => nil,
-        "content" => "foobar",
+      "account" => %{
+        "acct" => "nick6",
+        "avatar" => "http://localhost:4001/images/avi.png",
+        "avatar_static" => "http://localhost:4001/images/avi.png",
+        "bot" => false,
         "created_at" => "2020-04-07T19:48:51.000Z",
+        "display_name" => "Test テスト User 6",
         "emojis" => [],
-        "favourited" => false,
-        "favourites_count" => 0,
-        "id" => "9toJCu5YZW7O7gfvH6",
-        "in_reply_to_account_id" => nil,
-        "in_reply_to_id" => nil,
-        "language" => nil,
-        "media_attachments" => [],
-        "mentions" => [],
-        "muted" => false,
-        "pinned" => false,
+        "fields" => [],
+        "followers_count" => 1,
+        "following_count" => 0,
+        "header" => "http://localhost:4001/images/banner.png",
+        "header_static" => "http://localhost:4001/images/banner.png",
+        "id" => "9toJCsKN7SmSf3aj5c",
+        "locked" => false,
+        "note" => "Tester Number 6",
         "pleroma" => %{
-          "content" => %{"text/plain" => "foobar"},
-          "conversation_id" => 345_972,
-          "direct_conversation_id" => nil,
-          "emoji_reactions" => [],
-          "expires_at" => nil,
-          "in_reply_to_account_acct" => nil,
-          "local" => true,
-          "spoiler_text" => %{"text/plain" => ""},
-          "thread_muted" => false
+          "background_image" => nil,
+          "confirmation_pending" => false,
+          "hide_favorites" => true,
+          "hide_followers" => false,
+          "hide_followers_count" => false,
+          "hide_follows" => false,
+          "hide_follows_count" => false,
+          "is_admin" => false,
+          "is_moderator" => false,
+          "relationship" => %{
+            "blocked_by" => false,
+            "blocking" => false,
+            "domain_blocking" => false,
+            "endorsed" => false,
+            "followed_by" => false,
+            "following" => true,
+            "id" => "9toJCsKN7SmSf3aj5c",
+            "muting" => false,
+            "muting_notifications" => false,
+            "requested" => false,
+            "showing_reblogs" => true,
+            "subscribing" => false
+          },
+          "skip_thread_containment" => false,
+          "tags" => []
+        },
+        "source" => %{
+          "fields" => [],
+          "note" => "Tester Number 6",
+          "pleroma" => %{"actor_type" => "Person", "discoverable" => false},
+          "sensitive" => false
         },
-        "poll" => nil,
-        "reblog" => nil,
-        "reblogged" => false,
-        "reblogs_count" => 0,
-        "replies_count" => 0,
-        "sensitive" => false,
-        "spoiler_text" => "",
-        "tags" => [],
-        "uri" => "http://localhost:4001/objects/0f5dad44-0e9e-4610-b377-a2631e499190",
-        "url" => "http://localhost:4001/notice/9toJCu5YZW7O7gfvH6",
-        "visibility" => "private"
-      }
+        "statuses_count" => 1,
+        "url" => "http://localhost:4001/users/nick6",
+        "username" => "nick6"
+      },
+      "application" => %{"name" => "Web", "website" => nil},
+      "bookmarked" => false,
+      "card" => nil,
+      "content" => "foobar",
+      "created_at" => "2020-04-07T19:48:51.000Z",
+      "emojis" => [],
+      "favourited" => false,
+      "favourites_count" => 0,
+      "id" => "9toJCu5YZW7O7gfvH6",
+      "in_reply_to_account_id" => nil,
+      "in_reply_to_id" => nil,
+      "language" => nil,
+      "media_attachments" => [],
+      "mentions" => [],
+      "muted" => false,
+      "pinned" => false,
+      "pleroma" => %{
+        "content" => %{"text/plain" => "foobar"},
+        "conversation_id" => 345_972,
+        "direct_conversation_id" => nil,
+        "emoji_reactions" => [],
+        "expires_at" => nil,
+        "in_reply_to_account_acct" => nil,
+        "local" => true,
+        "spoiler_text" => %{"text/plain" => ""},
+        "thread_muted" => false
+      },
+      "poll" => nil,
+      "reblog" => nil,
+      "reblogged" => false,
+      "reblogs_count" => 0,
+      "replies_count" => 0,
+      "sensitive" => false,
+      "spoiler_text" => "",
+      "tags" => [],
+      "uri" => "http://localhost:4001/objects/0f5dad44-0e9e-4610-b377-a2631e499190",
+      "url" => "http://localhost:4001/notice/9toJCu5YZW7O7gfvH6",
+      "visibility" => "private"
     }
   })
 end