aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/api_spec/schemas/account.ex
blob: d54e2158d7ac2618ede9c0905feadc91d76d9a20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# 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.Account do
  alias OpenApiSpex.Schema
  alias Pleroma.Web.ApiSpec.Schemas.AccountField
  alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship
  alias Pleroma.Web.ApiSpec.Schemas.ActorType
  alias Pleroma.Web.ApiSpec.Schemas.Emoji
  alias Pleroma.Web.ApiSpec.Schemas.FlakeID
  alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope

  require OpenApiSpex

  OpenApiSpex.schema(%{
    title: "Account",
    description: "Response schema for an account",
    type: :object,
    properties: %{
      acct: %Schema{type: :string},
      avatar_static: %Schema{type: :string, format: :uri},
      avatar: %Schema{type: :string, format: :uri},
      bot: %Schema{type: :boolean},
      created_at: %Schema{type: :string, format: "date-time"},
      display_name: %Schema{type: :string},
      emojis: %Schema{type: :array, items: Emoji},
      fields: %Schema{type: :array, items: AccountField},
      follow_requests_count: %Schema{type: :integer},
      followers_count: %Schema{type: :integer},
      following_count: %Schema{type: :integer},
      header_static: %Schema{type: :string, format: :uri},
      header: %Schema{type: :string, format: :uri},
      id: FlakeID,
      locked: %Schema{type: :boolean},
      note: %Schema{type: :string, format: :html},
      statuses_count: %Schema{type: :integer},
      url: %Schema{type: :string, format: :uri},
      username: %Schema{type: :string},
      pleroma: %Schema{
        type: :object,
        properties: %{
          allow_following_move: %Schema{type: :boolean},
          background_image: %Schema{type: :string, nullable: true},
          chat_token: %Schema{type: :string},
          confirmation_pending: %Schema{type: :boolean},
          hide_favorites: %Schema{type: :boolean},
          hide_followers_count: %Schema{type: :boolean},
          hide_followers: %Schema{type: :boolean},
          hide_follows_count: %Schema{type: :boolean},
          hide_follows: %Schema{type: :boolean},
          is_admin: %Schema{type: :boolean},
          is_moderator: %Schema{type: :boolean},
          skip_thread_containment: %Schema{type: :boolean},
          tags: %Schema{type: :array, items: %Schema{type: :string}},
          unread_conversation_count: %Schema{type: :integer},
          notification_settings: %Schema{
            type: :object,
            properties: %{
              followers: %Schema{type: :boolean},
              follows: %Schema{type: :boolean},
              non_followers: %Schema{type: :boolean},
              non_follows: %Schema{type: :boolean},
              privacy_option: %Schema{type: :boolean}
            }
          },
          relationship: AccountRelationship,
          settings_store: %Schema{
            type: :object
          }
        }
      },
      source: %Schema{
        type: :object,
        properties: %{
          fields: %Schema{type: :array, items: AccountField},
          note: %Schema{type: :string},
          privacy: VisibilityScope,
          sensitive: %Schema{type: :boolean},
          pleroma: %Schema{
            type: :object,
            properties: %{
              actor_type: ActorType,
              discoverable: %Schema{type: :boolean},
              no_rich_text: %Schema{type: :boolean},
              show_role: %Schema{type: :boolean}
            }
          }
        }
      }
    },
    example: %{
      "acct" => "foobar",
      "avatar" => "https://mypleroma.com/images/avi.png",
      "avatar_static" => "https://mypleroma.com/images/avi.png",
      "bot" => false,
      "created_at" => "2020-03-24T13:05:58.000Z",
      "display_name" => "foobar",
      "emojis" => [],
      "fields" => [],
      "follow_requests_count" => 0,
      "followers_count" => 0,
      "following_count" => 1,
      "header" => "https://mypleroma.com/images/banner.png",
      "header_static" => "https://mypleroma.com/images/banner.png",
      "id" => "9tKi3esbG7OQgZ2920",
      "locked" => false,
      "note" => "cofe",
      "pleroma" => %{
        "allow_following_move" => true,
        "background_image" => nil,
        "confirmation_pending" => true,
        "hide_favorites" => true,
        "hide_followers" => false,
        "hide_followers_count" => false,
        "hide_follows" => false,
        "hide_follows_count" => false,
        "is_admin" => false,
        "is_moderator" => false,
        "skip_thread_containment" => false,
        "chat_token" =>
          "SFMyNTY.g3QAAAACZAAEZGF0YW0AAAASOXRLaTNlc2JHN09RZ1oyOTIwZAAGc2lnbmVkbgYARNplS3EB.Mb_Iaqew2bN1I1o79B_iP7encmVCpTKC4OtHZRxdjKc",
        "unread_conversation_count" => 0,
        "tags" => [],
        "notification_settings" => %{
          "followers" => true,
          "follows" => true,
          "non_followers" => true,
          "non_follows" => true,
          "privacy_option" => false
        },
        "relationship" => %{
          "blocked_by" => false,
          "blocking" => false,
          "domain_blocking" => false,
          "endorsed" => false,
          "followed_by" => false,
          "following" => false,
          "id" => "9tKi3esbG7OQgZ2920",
          "muting" => false,
          "muting_notifications" => false,
          "requested" => false,
          "showing_reblogs" => true,
          "subscribing" => false
        },
        "settings_store" => %{
          "pleroma-fe" => %{}
        }
      },
      "source" => %{
        "fields" => [],
        "note" => "foobar",
        "pleroma" => %{
          "actor_type" => "Person",
          "discoverable" => false,
          "no_rich_text" => false,
          "show_role" => true
        },
        "privacy" => "public",
        "sensitive" => false
      },
      "statuses_count" => 0,
      "url" => "https://mypleroma.com/users/foobar",
      "username" => "foobar"
    }
  })
end