logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

announcement_operation.ex (1724B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.ApiSpec.AnnouncementOperation do
  5. alias OpenApiSpex.Operation
  6. alias OpenApiSpex.Schema
  7. alias Pleroma.Web.ApiSpec.Schemas.Announcement
  8. alias Pleroma.Web.ApiSpec.Schemas.ApiError
  9. def open_api_operation(action) do
  10. operation = String.to_existing_atom("#{action}_operation")
  11. apply(__MODULE__, operation, [])
  12. end
  13. def index_operation do
  14. %Operation{
  15. tags: ["Announcements"],
  16. summary: "Retrieve a list of announcements",
  17. operationId: "MastodonAPI.AnnouncementController.index",
  18. security: [%{"oAuth" => []}],
  19. responses: %{
  20. 200 => Operation.response("Response", "application/json", list_of_announcements()),
  21. 403 => Operation.response("Forbidden", "application/json", ApiError)
  22. }
  23. }
  24. end
  25. def mark_read_operation do
  26. %Operation{
  27. tags: ["Announcements"],
  28. summary: "Mark one announcement as read",
  29. operationId: "MastodonAPI.AnnouncementController.mark_read",
  30. security: [%{"oAuth" => ["write:accounts"]}],
  31. parameters: [
  32. Operation.parameter(
  33. :id,
  34. :path,
  35. :string,
  36. "announcement id"
  37. )
  38. ],
  39. responses: %{
  40. 200 => Operation.response("Response", "application/json", %Schema{type: :object}),
  41. 403 => Operation.response("Forbidden", "application/json", ApiError),
  42. 404 => Operation.response("Not Found", "application/json", ApiError)
  43. }
  44. }
  45. end
  46. def list_of_announcements do
  47. %Schema{
  48. type: :array,
  49. items: Announcement
  50. }
  51. end
  52. end