defmodule ProviderServiceWeb.ApiSpec do alias OpenApiSpex.{OpenApi, Info, Server, Components, SecurityScheme} alias OpenApiSpex.{Info, OpenApi, Paths, Server} alias ProviderServiceWeb.{Endpoint, Router} @behaviour OpenApiSpex.OpenApi @impl OpenApi def spec do %OpenApi{ servers: [ # Populate the Server info from a phoenix endpoint Server.from_endpoint(Endpoint) ], info: %Info{ title: "Provider Service", version: "1.0" }, # Populate the paths from a phoenix router paths: Paths.from_router(Router), components: %Components{ securitySchemes: %{ "bearerAuth" => %SecurityScheme{ type: "http", scheme: "bearer", bearerFormat: "JWT", description: "Zitadel JWT bearer token" }, "x-organization-id" => %SecurityScheme{ type: "apiKey", in: "header", name: "x-organization-id", description: "Organization identifier" } } }, security: [%{"bearerAuth" => [], "x-organization-id" => []}] } # Discover request/response schemas from path specs |> OpenApiSpex.resolve_schema_modules() end end