57 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| # 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 do
 | |
|   alias OpenApiSpex.OpenApi
 | |
|   alias OpenApiSpex.Operation
 | |
|   alias Pleroma.Web.Endpoint
 | |
|   alias Pleroma.Web.Router
 | |
| 
 | |
|   @behaviour OpenApi
 | |
| 
 | |
|   @impl OpenApi
 | |
|   def spec do
 | |
|     %OpenApi{
 | |
|       servers: [
 | |
|         # Populate the Server info from a phoenix endpoint
 | |
|         OpenApiSpex.Server.from_endpoint(Endpoint)
 | |
|       ],
 | |
|       info: %OpenApiSpex.Info{
 | |
|         title: "Pleroma",
 | |
|         description: Application.spec(:pleroma, :description) |> to_string(),
 | |
|         version: Application.spec(:pleroma, :vsn) |> to_string()
 | |
|       },
 | |
|       # populate the paths from a phoenix router
 | |
|       paths: OpenApiSpex.Paths.from_router(Router),
 | |
|       components: %OpenApiSpex.Components{
 | |
|         parameters: %{
 | |
|           "accountIdOrNickname" =>
 | |
|             Operation.parameter(:id, :path, :string, "Account ID or nickname",
 | |
|               example: "123",
 | |
|               required: true
 | |
|             )
 | |
|         },
 | |
|         securitySchemes: %{
 | |
|           "oAuth" => %OpenApiSpex.SecurityScheme{
 | |
|             type: "oauth2",
 | |
|             flows: %OpenApiSpex.OAuthFlows{
 | |
|               password: %OpenApiSpex.OAuthFlow{
 | |
|                 authorizationUrl: "/oauth/authorize",
 | |
|                 tokenUrl: "/oauth/token",
 | |
|                 scopes: %{
 | |
|                   "read" => "read",
 | |
|                   "write" => "write",
 | |
|                   "follow" => "follow",
 | |
|                   "push" => "push"
 | |
|                 }
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|     # discover request/response schemas from path specs
 | |
|     |> OpenApiSpex.resolve_schema_modules()
 | |
|   end
 | |
| end
 | 
