View Source AshJsonApi.OpenApi (ash_json_api v1.0.0-rc.6)

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

@spec paths(domain :: module() | [module()]) :: 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.

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

Tags based on resource names to include in the API spec