mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-23 08:36:29 +00:00
Add Attachment schema
This commit is contained in:
parent
42a2acac46
commit
6ba25d1197
3 changed files with 123 additions and 16 deletions
68
lib/pleroma/web/api_spec/schemas/attachment.ex
Normal file
68
lib/pleroma/web/api_spec/schemas/attachment.ex
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
# 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.Attachment do
|
||||||
|
alias OpenApiSpex.Schema
|
||||||
|
|
||||||
|
require OpenApiSpex
|
||||||
|
|
||||||
|
OpenApiSpex.schema(%{
|
||||||
|
title: "Attachment",
|
||||||
|
description: "Represents a file or media attachment that can be added to a status.",
|
||||||
|
type: :object,
|
||||||
|
requried: [:id, :url, :preview_url],
|
||||||
|
properties: %{
|
||||||
|
id: %Schema{type: :string},
|
||||||
|
url: %Schema{
|
||||||
|
type: :string,
|
||||||
|
format: :uri,
|
||||||
|
description: "The location of the original full-size attachment"
|
||||||
|
},
|
||||||
|
remote_url: %Schema{
|
||||||
|
type: :string,
|
||||||
|
format: :uri,
|
||||||
|
description:
|
||||||
|
"The location of the full-size original attachment on the remote website. String (URL), or null if the attachment is local",
|
||||||
|
nullable: true
|
||||||
|
},
|
||||||
|
preview_url: %Schema{
|
||||||
|
type: :string,
|
||||||
|
format: :uri,
|
||||||
|
description: "The location of a scaled-down preview of the attachment"
|
||||||
|
},
|
||||||
|
text_url: %Schema{
|
||||||
|
type: :string,
|
||||||
|
format: :uri,
|
||||||
|
description: "A shorter URL for the attachment"
|
||||||
|
},
|
||||||
|
description: %Schema{
|
||||||
|
type: :string,
|
||||||
|
nullable: true,
|
||||||
|
description:
|
||||||
|
"Alternate text that describes what is in the media attachment, to be used for the visually impaired or when media attachments do not load"
|
||||||
|
},
|
||||||
|
type: %Schema{
|
||||||
|
type: :string,
|
||||||
|
enum: ["image", "video", "audio", "unknown"],
|
||||||
|
description: "The type of the attachment"
|
||||||
|
},
|
||||||
|
pleroma: %Schema{
|
||||||
|
type: :object,
|
||||||
|
properties: %{
|
||||||
|
mime_type: %Schema{type: :string, description: "mime type of the attachment"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
example: %{
|
||||||
|
id: "1638338801",
|
||||||
|
type: "image",
|
||||||
|
url: "someurl",
|
||||||
|
remote_url: "someurl",
|
||||||
|
preview_url: "someurl",
|
||||||
|
text_url: "someurl",
|
||||||
|
description: nil,
|
||||||
|
pleroma: %{mime_type: "image/png"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
53
lib/pleroma/web/api_spec/schemas/scheduled_status.ex
Normal file
53
lib/pleroma/web/api_spec/schemas/scheduled_status.ex
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
# 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.ScheduledStatus do
|
||||||
|
alias OpenApiSpex.Schema
|
||||||
|
alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
|
||||||
|
alias Pleroma.Web.ApiSpec.Schemas.Poll
|
||||||
|
|
||||||
|
require OpenApiSpex
|
||||||
|
|
||||||
|
OpenApiSpex.schema(%{
|
||||||
|
title: "ScheduledStatus",
|
||||||
|
description: "Represents a status that will be published at a future scheduled date.",
|
||||||
|
type: :object,
|
||||||
|
required: [:id, :scheduled_at, :params],
|
||||||
|
properties: %{
|
||||||
|
id: %Schema{type: :string},
|
||||||
|
scheduled_at: %Schema{type: :string, format: :"date-time"},
|
||||||
|
media_attachments: %Schema{type: :array, format: :"date-time"},
|
||||||
|
params: %Schema{
|
||||||
|
type: :object,
|
||||||
|
required: [:text, :visibility],
|
||||||
|
properties: %{
|
||||||
|
text: %Schema{type: :string, nullable: true},
|
||||||
|
media_ids: %Schema{type: :array, nullable: true, items: %Schema{type: :string}},
|
||||||
|
sensitive: %Schema{type: :boolean, nullable: true},
|
||||||
|
spoiler_text: %Schema{type: :string, nullable: true},
|
||||||
|
visibility: %Schema{type: VisibilityScope, nullable: true},
|
||||||
|
scheduled_at: %Schema{type: :string, format: :"date-time", nullable: true},
|
||||||
|
poll: %Schema{type: Poll, nullable: true},
|
||||||
|
in_reply_to_id: %Schema{type: :string, nullable: true}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
example: %{
|
||||||
|
id: "3221",
|
||||||
|
scheduled_at: "2019-12-05T12:33:01.000Z",
|
||||||
|
params: %{
|
||||||
|
text: "test content",
|
||||||
|
media_ids: nil,
|
||||||
|
sensitive: nil,
|
||||||
|
spoiler_text: nil,
|
||||||
|
visibility: nil,
|
||||||
|
scheduled_at: nil,
|
||||||
|
poll: nil,
|
||||||
|
idempotency: nil,
|
||||||
|
in_reply_to_id: nil
|
||||||
|
},
|
||||||
|
media_attachments: []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
|
@ -5,6 +5,7 @@
|
||||||
defmodule Pleroma.Web.ApiSpec.Schemas.Status do
|
defmodule Pleroma.Web.ApiSpec.Schemas.Status do
|
||||||
alias OpenApiSpex.Schema
|
alias OpenApiSpex.Schema
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.Account
|
alias Pleroma.Web.ApiSpec.Schemas.Account
|
||||||
|
alias Pleroma.Web.ApiSpec.Schemas.Attachment
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.Emoji
|
alias Pleroma.Web.ApiSpec.Schemas.Emoji
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.FlakeID
|
alias Pleroma.Web.ApiSpec.Schemas.FlakeID
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.Poll
|
alias Pleroma.Web.ApiSpec.Schemas.Poll
|
||||||
|
@ -50,22 +51,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
|
||||||
language: %Schema{type: :string, nullable: true},
|
language: %Schema{type: :string, nullable: true},
|
||||||
media_attachments: %Schema{
|
media_attachments: %Schema{
|
||||||
type: :array,
|
type: :array,
|
||||||
items: %Schema{
|
items: Attachment
|
||||||
type: :object,
|
|
||||||
properties: %{
|
|
||||||
id: %Schema{type: :string},
|
|
||||||
url: %Schema{type: :string, format: :uri},
|
|
||||||
remote_url: %Schema{type: :string, format: :uri},
|
|
||||||
preview_url: %Schema{type: :string, format: :uri},
|
|
||||||
text_url: %Schema{type: :string, format: :uri},
|
|
||||||
description: %Schema{type: :string},
|
|
||||||
type: %Schema{type: :string, enum: ["image", "video", "audio", "unknown"]},
|
|
||||||
pleroma: %Schema{
|
|
||||||
type: :object,
|
|
||||||
properties: %{mime_type: %Schema{type: :string}}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
mentions: %Schema{
|
mentions: %Schema{
|
||||||
type: :array,
|
type: :array,
|
||||||
|
|
Loading…
Reference in a new issue