View Source AshJsonApi.OpenApi (ash_json_api v1.3.8)

Provides functions for generating schemas and operations for OpenApi definitions.

Add open_api_spex to your mix.exs deps for the required struct definitions.

Example

defmodule MyApp.OpenApi do
  alias OpenApiSpex.{OpenApi, Info, Server, Components}

  def spec do
    %OpenApi{
      info: %Info{
        title: "MyApp JSON API",
        version: "1.1"
      },
      servers: [
        Server.from_endpoint(MyAppWeb.Endpoint)
      ],
      paths: AshJsonApi.OpenApi.paths(MyApp.Api),
      tags: AshJsonApi.OpenApi.tags(MyApp.Api),
      components: %Components{
        responses: AshJsonApi.OpenApi.responses(),
        schemas: AshJsonApi.OpenApi.schemas(MyApp.Api)
      }
    }
  end
end

Summary

Functions

Paths (routes) from the domain.

Common responses to include in the API Spec.

Resource schemas to include in the API spec.

Tags based on resource names to include in the API spec

Functions

Link to this function

define_filter?(domains, resource)

View Source
Link to this function

paths(domains, all_domains, opts)

View Source
@spec paths(
  domain :: module() | [module()],
  module() | [module()],
  opts :: Keyword.t()
) ::
  OpenApiSpex.Paths.t()

Paths (routes) from the domain.

@spec responses() :: OpenApiSpex.Components.responses_map()

Common responses to include in the API Spec.

@spec schemas(domain :: module() | [module()]) :: %{
  required(String.t()) => OpenApiSpex.Schema.t()
}

Resource schemas to include in the API spec.

Link to this function

spec(opts \\ [], conn \\ nil)

View Source
@spec tags(domain :: module() | [module()]) :: [OpenApiSpex.Tag.t()]

Tags based on resource names to include in the API spec