distraction.party/lib/pleroma/web/api_spec/operations/translate_operation.ex

54 lines
1.3 KiB
Elixir
Raw Normal View History

defmodule Pleroma.Web.ApiSpec.TranslationOperation do
alias OpenApiSpex.Operation
alias OpenApiSpex.Schema
@spec open_api_operation(atom) :: Operation.t()
def open_api_operation(action) do
operation = String.to_existing_atom("#{action}_operation")
apply(__MODULE__, operation, [])
end
@spec languages_operation() :: Operation.t()
def languages_operation() do
%Operation{
tags: ["Retrieve status translation"],
summary: "Translate status",
description: "View the translation of a given status",
operationId: "AkkomaAPI.TranslationController.languages",
security: [%{"oAuth" => ["read:statuses"]}],
responses: %{
200 =>
Operation.response("Translation", "application/json", source_dest_languages_schema())
}
}
end
defp source_dest_languages_schema do
%Schema{
type: :object,
required: [:source, :target],
properties: %{
source: languages_schema(),
target: languages_schema()
}
}
end
defp languages_schema do
%Schema{
type: :array,
items: %Schema{
type: :object,
properties: %{
code: %Schema{
type: :string
},
name: %Schema{
type: :string
}
}
}
}
end
end