1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.ApiSpec.MediaOperation do
6 alias OpenApiSpex.Operation
7 alias OpenApiSpex.Schema
8 alias Pleroma.Web.ApiSpec.Helpers
9 alias Pleroma.Web.ApiSpec.Schemas.ApiError
11 def open_api_operation(action) do
12 operation = String.to_existing_atom("#{action}_operation")
13 apply(__MODULE__, operation, [])
16 def create_operation do
19 summary: "Upload media as attachment",
20 description: "Creates an attachment to be used with a new status.",
21 operationId: "MediaController.create",
22 security: [%{"oAuth" => ["write:media"]}],
23 requestBody: Helpers.request_body("Parameters", create_request()),
26 Operation.response("Media", "application/json", Pleroma.Web.ApiSpec.Schemas.Attachment),
27 401 => Operation.response("Media", "application/json", ApiError),
28 422 => Operation.response("Media", "application/json", ApiError)
33 defp create_request() do
35 title: "MediaCreateRequest",
36 description: "POST body for creating an attachment",
41 description: "The file to be attached, using multipart form data.",
46 description: "A plain-text description of the media, for accessibility purposes."
50 description: "Two floating points (x,y), comma-delimited, ranging from -1.0 to 1.0."
56 def update_operation do
59 summary: "Upload media as attachment",
60 description: "Creates an attachment to be used with a new status.",
61 operationId: "MediaController.update",
62 security: [%{"oAuth" => ["write:media"]}],
63 requestBody: Helpers.request_body("Parameters", update_request()),
66 Operation.response("Media", "application/json", Pleroma.Web.ApiSpec.Schemas.Attachment),
67 401 => Operation.response("Media", "application/json", ApiError),
68 422 => Operation.response("Media", "application/json", ApiError)
73 defp update_request() do
75 title: "MediaCreateRequest",
76 description: "POST body for creating an attachment",
81 description: "The id of the Attachment entity to be updated",
86 description: "The file to be attached, using multipart form data."
90 description: "A plain-text description of the media, for accessibility purposes."
94 description: "Two floating points (x,y), comma-delimited, ranging from -1.0 to 1.0."
100 def show_operation do
103 summary: "Show Uploaded media attachment",
104 operationId: "MediaController.show",
105 security: [%{"oAuth" => ["read:media"]}],
108 Operation.response("Media", "application/json", Pleroma.Web.ApiSpec.Schemas.Attachment),
109 401 => Operation.response("Media", "application/json", ApiError),
110 422 => Operation.response("Media", "application/json", ApiError)
115 def create2_operation do
118 summary: "Upload media as attachment",
119 description: "Creates an attachment to be used with a new status.",
120 operationId: "MediaController.create2",
121 security: [%{"oAuth" => ["write:media"]}],
122 requestBody: Helpers.request_body("Parameters", create_request()),
125 Operation.response("Media", "application/json", Pleroma.Web.ApiSpec.Schemas.Attachment),
126 422 => Operation.response("Media", "application/json", ApiError),
127 500 => Operation.response("Media", "application/json", ApiError)