Add OpenAPI schema for FlakeID
authorEgor Kislitsyn <egor@kislitsyn.com>
Tue, 21 Apr 2020 19:54:45 +0000 (23:54 +0400)
committerEgor Kislitsyn <egor@kislitsyn.com>
Tue, 21 Apr 2020 19:54:45 +0000 (23:54 +0400)
lib/pleroma/web/api_spec/schemas/account.ex
lib/pleroma/web/api_spec/schemas/account_relationship.ex
lib/pleroma/web/api_spec/schemas/flake_id.ex [new file with mode: 0644]
lib/pleroma/web/api_spec/schemas/poll.ex
lib/pleroma/web/api_spec/schemas/status.ex

index 3634a7c766af12a4abf00af7e8d962560606bc30..f570152540fb89415dfd45afb7820eb831a9b613 100644 (file)
@@ -6,7 +6,9 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do
   alias OpenApiSpex.Schema
   alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji
   alias Pleroma.Web.ApiSpec.Schemas.AccountField
+  alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship
   alias Pleroma.Web.ApiSpec.Schemas.ActorType
+  alias Pleroma.Web.ApiSpec.Schemas.FlakeID
   alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
 
   require OpenApiSpex
@@ -29,7 +31,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do
       following_count: %Schema{type: :integer},
       header_static: %Schema{type: :string, format: :uri},
       header: %Schema{type: :string, format: :uri},
-      id: %Schema{type: :string},
+      id: FlakeID,
       locked: %Schema{type: :boolean},
       note: %Schema{type: :string, format: :html},
       statuses_count: %Schema{type: :integer},
@@ -62,23 +64,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do
               privacy_option: %Schema{type: :boolean}
             }
           },
-          relationship: %Schema{
-            type: :object,
-            properties: %{
-              blocked_by: %Schema{type: :boolean},
-              blocking: %Schema{type: :boolean},
-              domain_blocking: %Schema{type: :boolean},
-              endorsed: %Schema{type: :boolean},
-              followed_by: %Schema{type: :boolean},
-              following: %Schema{type: :boolean},
-              id: %Schema{type: :string},
-              muting: %Schema{type: :boolean},
-              muting_notifications: %Schema{type: :boolean},
-              requested: %Schema{type: :boolean},
-              showing_reblogs: %Schema{type: :boolean},
-              subscribing: %Schema{type: :boolean}
-            }
-          },
+          relationship: AccountRelationship,
           settings_store: %Schema{
             type: :object
           }
index f2bd37d399a1bf5bb30eb237889134b3fe6227d9..8b982669e0edd6101a75ef4bf3875c26d468887d 100644 (file)
@@ -4,6 +4,7 @@
 
 defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationship do
   alias OpenApiSpex.Schema
+  alias Pleroma.Web.ApiSpec.Schemas.FlakeID
 
   require OpenApiSpex
 
@@ -18,7 +19,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationship do
       endorsed: %Schema{type: :boolean},
       followed_by: %Schema{type: :boolean},
       following: %Schema{type: :boolean},
-      id: %Schema{type: :string},
+      id: FlakeID,
       muting: %Schema{type: :boolean},
       muting_notifications: %Schema{type: :boolean},
       requested: %Schema{type: :boolean},
diff --git a/lib/pleroma/web/api_spec/schemas/flake_id.ex b/lib/pleroma/web/api_spec/schemas/flake_id.ex
new file mode 100644 (file)
index 0000000..b8e03b8
--- /dev/null
@@ -0,0 +1,14 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.ApiSpec.Schemas.FlakeID do
+  require OpenApiSpex
+
+  OpenApiSpex.schema(%{
+    title: "FlakeID",
+    description:
+      "Pleroma uses 128-bit ids as opposed to Mastodon's 64 bits. However just like Mastodon's ids they are sortable strings",
+    type: :string
+  })
+end
index 2a9975f8514f9d7926b0a2ca5aa1c0b08706cce4..5fc9e889f278898e73483fb0f119b07e1d686985 100644 (file)
@@ -5,6 +5,7 @@
 defmodule Pleroma.Web.ApiSpec.Schemas.Poll do
   alias OpenApiSpex.Schema
   alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji
+  alias Pleroma.Web.ApiSpec.Schemas.FlakeID
 
   require OpenApiSpex
 
@@ -13,7 +14,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Poll do
     description: "Response schema for account custom fields",
     type: :object,
     properties: %{
-      id: %Schema{type: :string},
+      id: FlakeID,
       expires_at: %Schema{type: :string, format: "date-time"},
       expired: %Schema{type: :boolean},
       multiple: %Schema{type: :boolean},
index a022450e626c69b9e33d91c7bb120541ee98a11d..bf5f046919a53de93b6ecd8065490a9666cc831e 100644 (file)
@@ -6,6 +6,7 @@ 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.FlakeID
   alias Pleroma.Web.ApiSpec.Schemas.Poll
   alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
 
@@ -43,7 +44,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
       emojis: %Schema{type: :array, items: AccountEmoji},
       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},