View Source DSL: Ash.Api.Dsl

Apis are the entrypoints for working with your resources.

Apis may optionally include a list of resources, in which case they can be used as an Ash.Registry in various places. This is for backwards compatibility, but if at all possible you should define an Ash.Registry if you are using an extension that requires a list of resources. For example, most extensions look for two application environment variables called :ash_apis and :ash_registries to find any potential registries

api

General Api configuration

Examples

api do
  description """
  Resources related to the flux capacitor.
  """
end

Options

Name Type Default Docs
description String.t A description for the api.

resources

List the resources present in this API

Nested DSLs

Examples

resources do
  resource MyApp.Tweet
  resource MyApp.Comment
end

Options

Name Type Default Docs
allow mfa Support a dynamic resource list by providing a callback that checks whether or not the resource should be allowed.
allow_unregistered? boolean false Whether the Api will support only registered entries or not.
registry module Configure a registry that contains the resources. This option is generally not necessary anymore, and remains for backwards compatibility. Instead, configure resources in this block directly.

resources.resource

resource resource

A resource present in the API

Examples

resource Foo

Arguments

Name Type Default Docs
resource * module

Introspection

Target: Ash.Api.Dsl.ResourceReference

execution

Options for how requests are executed using this Api

Examples

execution do
  timeout :timer.seconds(30)
end

Options

Name Type Default Docs
timeout timeout 30000 The default timeout to use for requests using this API. See the [timeouts guide](/documentation/topics/timeouts.md) for more.
trace_name String.t The name to use in traces. Defaults to the last part of the module. See the [monitoring guide](/documentation/topics/monitoring.md) for more

authorization

Options for how requests are authorized using this Api. See the security guide for more.

Examples

authorization do
  authorize :by_default
end

Options

Name Type Default Docs
require_actor? boolean false Requires that an actor has been supplied.
authorize :always | :by_default | :when_requested :when_requested When to run authorization for a given request.