Add spec for AccountController.verify_credentials
[akkoma] / lib / pleroma / web / api_spec / schemas / account.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.ApiSpec.Schemas.Account do
6 alias OpenApiSpex.Schema
7 alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji
8 alias Pleroma.Web.ApiSpec.Schemas.AccountField
9
10 require OpenApiSpex
11
12 OpenApiSpex.schema(%{
13 title: "Account",
14 description: "Response schema for an account",
15 type: :object,
16 properties: %{
17 acct: %Schema{type: :string},
18 avatar_static: %Schema{type: :string},
19 avatar: %Schema{type: :string},
20 bot: %Schema{type: :boolean},
21 created_at: %Schema{type: :string, format: "date-time"},
22 display_name: %Schema{type: :string},
23 emojis: %Schema{type: :array, items: AccountEmoji},
24 fields: %Schema{type: :array, items: AccountField},
25 follow_requests_count: %Schema{type: :integer},
26 followers_count: %Schema{type: :integer},
27 following_count: %Schema{type: :integer},
28 header_static: %Schema{type: :string},
29 header: %Schema{type: :string},
30 id: %Schema{type: :string},
31 locked: %Schema{type: :boolean},
32 note: %Schema{type: :string},
33 statuses_count: %Schema{type: :integer},
34 url: %Schema{type: :string},
35 username: %Schema{type: :string},
36 pleroma: %Schema{
37 type: :object,
38 properties: %{
39 allow_following_move: %Schema{type: :boolean},
40 background_image: %Schema{type: :boolean, nullable: true},
41 chat_token: %Schema{type: :string},
42 confirmation_pending: %Schema{type: :boolean},
43 hide_favorites: %Schema{type: :boolean},
44 hide_followers_count: %Schema{type: :boolean},
45 hide_followers: %Schema{type: :boolean},
46 hide_follows_count: %Schema{type: :boolean},
47 hide_follows: %Schema{type: :boolean},
48 is_admin: %Schema{type: :boolean},
49 is_moderator: %Schema{type: :boolean},
50 skip_thread_containment: %Schema{type: :boolean},
51 tags: %Schema{type: :array, items: %Schema{type: :string}},
52 unread_conversation_count: %Schema{type: :integer},
53 notification_settings: %Schema{
54 type: :object,
55 properties: %{
56 followers: %Schema{type: :boolean},
57 follows: %Schema{type: :boolean},
58 non_followers: %Schema{type: :boolean},
59 non_follows: %Schema{type: :boolean},
60 privacy_option: %Schema{type: :boolean}
61 }
62 },
63 relationship: %Schema{
64 type: :object,
65 properties: %{
66 blocked_by: %Schema{type: :boolean},
67 blocking: %Schema{type: :boolean},
68 domain_blocking: %Schema{type: :boolean},
69 endorsed: %Schema{type: :boolean},
70 followed_by: %Schema{type: :boolean},
71 following: %Schema{type: :boolean},
72 id: %Schema{type: :string},
73 muting: %Schema{type: :boolean},
74 muting_notifications: %Schema{type: :boolean},
75 requested: %Schema{type: :boolean},
76 showing_reblogs: %Schema{type: :boolean},
77 subscribing: %Schema{type: :boolean}
78 }
79 },
80 settings_store: %Schema{
81 type: :object
82 }
83 }
84 },
85 source: %Schema{
86 type: :object,
87 properties: %{
88 fields: %Schema{type: :array, items: AccountField},
89 note: %Schema{type: :string},
90 privacy: %Schema{type: :string},
91 sensitive: %Schema{type: :boolean},
92 pleroma: %Schema{
93 type: :object,
94 properties: %{
95 actor_type: %Schema{type: :string},
96 discoverable: %Schema{type: :boolean},
97 no_rich_text: %Schema{type: :boolean},
98 show_role: %Schema{type: :boolean}
99 }
100 }
101 }
102 }
103 },
104 example: %{
105 "JSON" => %{
106 "acct" => "foobar",
107 "avatar" => "https://mypleroma.com/images/avi.png",
108 "avatar_static" => "https://mypleroma.com/images/avi.png",
109 "bot" => false,
110 "created_at" => "2020-03-24T13:05:58.000Z",
111 "display_name" => "foobar",
112 "emojis" => [],
113 "fields" => [],
114 "follow_requests_count" => 0,
115 "followers_count" => 0,
116 "following_count" => 1,
117 "header" => "https://mypleroma.com/images/banner.png",
118 "header_static" => "https://mypleroma.com/images/banner.png",
119 "id" => "9tKi3esbG7OQgZ2920",
120 "locked" => false,
121 "note" => "cofe",
122 "pleroma" => %{
123 "allow_following_move" => true,
124 "background_image" => nil,
125 "confirmation_pending" => true,
126 "hide_favorites" => true,
127 "hide_followers" => false,
128 "hide_followers_count" => false,
129 "hide_follows" => false,
130 "hide_follows_count" => false,
131 "is_admin" => false,
132 "is_moderator" => false,
133 "skip_thread_containment" => false,
134 "chat_token" =>
135 "SFMyNTY.g3QAAAACZAAEZGF0YW0AAAASOXRLaTNlc2JHN09RZ1oyOTIwZAAGc2lnbmVkbgYARNplS3EB.Mb_Iaqew2bN1I1o79B_iP7encmVCpTKC4OtHZRxdjKc",
136 "unread_conversation_count" => 0,
137 "tags" => [],
138 "notification_settings" => %{
139 "followers" => true,
140 "follows" => true,
141 "non_followers" => true,
142 "non_follows" => true,
143 "privacy_option" => false
144 },
145 "relationship" => %{
146 "blocked_by" => false,
147 "blocking" => false,
148 "domain_blocking" => false,
149 "endorsed" => false,
150 "followed_by" => false,
151 "following" => false,
152 "id" => "9tKi3esbG7OQgZ2920",
153 "muting" => false,
154 "muting_notifications" => false,
155 "requested" => false,
156 "showing_reblogs" => true,
157 "subscribing" => false
158 },
159 "settings_store" => %{
160 "pleroma-fe" => %{}
161 }
162 },
163 "source" => %{
164 "fields" => [],
165 "note" => "foobar",
166 "pleroma" => %{
167 "actor_type" => "Person",
168 "discoverable" => false,
169 "no_rich_text" => false,
170 "show_role" => true
171 },
172 "privacy" => "public",
173 "sensitive" => false
174 },
175 "statuses_count" => 0,
176 "url" => "https://mypleroma.com/users/foobar",
177 "username" => "foobar"
178 }
179 }
180 })
181 end