diff options
author | lain <lain@soykaf.club> | 2020-04-09 09:48:56 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-04-09 09:48:56 +0000 |
commit | d2e21fbc968fbbeb98e9860e1dce77443f4b4cd4 (patch) | |
tree | 3c6433a6ece4dc263da52d7b0994c0430c94709d /lib/pleroma/web/api_spec.ex | |
parent | 564f3f01caa66b4632ef9e30f4f896478b1ac131 (diff) | |
parent | 03eebabe8e5b2e3f96f6ffe51a6f063a42f6a5d2 (diff) | |
download | pleroma-d2e21fbc968fbbeb98e9860e1dce77443f4b4cd4.tar.gz |
Merge branch 'open-api' into 'develop'
Add OpenAPI
Closes pleroma-meta#19
See merge request pleroma/pleroma!2345
Diffstat (limited to 'lib/pleroma/web/api_spec.ex')
-rw-r--r-- | lib/pleroma/web/api_spec.ex | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/pleroma/web/api_spec.ex b/lib/pleroma/web/api_spec.ex new file mode 100644 index 000000000..41e48a085 --- /dev/null +++ b/lib/pleroma/web/api_spec.ex @@ -0,0 +1,44 @@ +# 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 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{ + securitySchemes: %{ + "oAuth" => %OpenApiSpex.SecurityScheme{ + type: "oauth2", + flows: %OpenApiSpex.OAuthFlows{ + password: %OpenApiSpex.OAuthFlow{ + authorizationUrl: "/oauth/authorize", + tokenUrl: "/oauth/token", + scopes: %{"read" => "read"} + } + } + } + } + } + } + # discover request/response schemas from path specs + |> OpenApiSpex.resolve_schema_modules() + end +end |