View Source DSL: AshJsonApi.Domain

The entrypoint for adding JSON:API behavior to an Ash domain

json_api

Global configuration for JSON:API

Nested DSLs

  • open_api
  • routes
    • base_route
      • get
      • index
      • post
      • patch
      • delete
      • related
      • relationship
      • post_to_relationship
      • patch_relationship
      • delete_from_relationship
      • route
    • get
    • index
    • post
    • patch
    • delete
    • related
    • relationship
    • post_to_relationship
    • patch_relationship
    • delete_from_relationship
    • route

Examples

json_api do
  prefix "/json_api"
  log_errors? true
end

Options

NameTypeDefaultDocs
routeratomThe router that you created for this Domain. Used by test helpers to send requests
show_raised_errors?booleanfalseFor security purposes, if an error is raised then Ash simply shows a generic error. If you want to show those errors, set this to true.
prefixString.tThe route prefix at which you are serving the JSON:API
serve_schema?booleanfalseWhether or not create a /schema route that serves the JSON schema of your API
authorize?booleantrueWhether or not to perform authorization on requests.
log_errors?booleantrueWhether or not to log any errors produced
include_nil_values?booleantrueWhether or not to include properties for values that are nil in the JSON output

json_api.open_api

OpenAPI configurations

Examples

json_api do
  ...
  open_api do
    tag "Users"
    group_by :api
  end
end

Options

NameTypeDefaultDocs
tagString.tTag to be used when used by :group_by
group_by:domain | :resource:resourceGroup by :domain or :resource

json_api.routes

Configure the routes that will be exposed via the JSON:API

Nested DSLs

Examples

routes do
  base "/posts"

  get :read
  get :me, route: "/me"
  index :read
  post :confirm_name, route: "/confirm_name"
  patch :update
  related :comments, :read
  relationship :comments, :read
  post_to_relationship :comments
  patch_relationship :comments
  delete_from_relationship :comments
end

json_api.routes.base_route

base_route route, resource \\ nil

Sets a prefix for a list of contained routes

Nested DSLs

Examples

base_route "/posts" do
  index :read
  get :read
end

base_route "/comments" do
  index :read
end

Arguments

NameTypeDefaultDocs
routeString.tThe route prefix to use for contained routes
resourcemoduleThe resource that the contained routes will use by default

json_api.routes.base_route.get

get resource \\ nil, action

A GET route to retrieve a single record

Examples

get :read

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
routeString.t"/:id"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.index

index resource \\ nil, action

A GET route to retrieve a list of records

Examples

index :read

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
paginate?booleantrue
routeString.t"/"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.post

post resource \\ nil, action

A POST route to create a record

Examples

post :create

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
routeString.t"/"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource
relationship_argumentslist(atom | {:id, atom})[]Arguments to be used to edit relationships. See the relationships guide for more.
upsert?booleanfalseWhether or not to use the upsert?: true option when calling Ash.create/2.
upsert_identityatomfalseWhich identity to use for the upsert

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.patch

patch resource \\ nil, action

A PATCH route to update a record

Examples

patch :update

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
relationship_argumentsany[]Arguments to be used to edit relationships. See the relationships guide for more.
read_actionatomThe read action to use to look the record up before updating
routeString.t"/:id"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.delete

delete resource \\ nil, action

A DELETE route to destroy a record

Examples

delete :destroy

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
read_actionatomThe read action to use to look the record up before updating
routeString.t"/:id"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

related resource \\ nil, relationship, action

A GET route to read the related resources of a relationship

Examples

related :comments, :read

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.relationship

relationship resource \\ nil, relationship, action

A READ route to read the relationship, returns resource identifiers.

Examples

relationship :comments, :read

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/relationships/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.post_to_relationship

post_to_relationship resource \\ nil, relationship

A POST route to create related entities using resource identifiers

Examples

post_to_relationship :comments

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/relationships/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.patch_relationship

patch_relationship resource \\ nil, relationship

A PATCH route to update a relationship using resource identifiers

Examples

patch_relationship :comments

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/relationships/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.delete_from_relationship

delete_from_relationship resource \\ nil, relationship

A DELETE route to remove related entities using resource identifiers

Examples

delete_from_relationship :comments

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/relationships/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.base_route.route

route resource \\ nil, method, route, action

A route for a generic action.

Examples

route :get, "say_hi/:name", :say_hello"

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
methodatomThe HTTP method for the route, e.g :get, or :post
routeString.tThe path of the route
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
wrap_in_result?booleanfalseWhether or not the action result should be wrapped in {result: <result>}
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

Introspection

Target: AshJsonApi.Domain.BaseRoute

json_api.routes.get

get resource, action

A GET route to retrieve a single record

Examples

get :read

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
routeString.t"/:id"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.index

index resource, action

A GET route to retrieve a list of records

Examples

index :read

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
paginate?booleantrue
routeString.t"/"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.post

post resource, action

A POST route to create a record

Examples

post :create

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
routeString.t"/"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource
relationship_argumentslist(atom | {:id, atom})[]Arguments to be used to edit relationships. See the relationships guide for more.
upsert?booleanfalseWhether or not to use the upsert?: true option when calling Ash.create/2.
upsert_identityatomfalseWhich identity to use for the upsert

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.patch

patch resource, action

A PATCH route to update a record

Examples

patch :update

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
relationship_argumentsany[]Arguments to be used to edit relationships. See the relationships guide for more.
read_actionatomThe read action to use to look the record up before updating
routeString.t"/:id"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.delete

delete resource, action

A DELETE route to destroy a record

Examples

delete :destroy

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
read_actionatomThe read action to use to look the record up before updating
routeString.t"/:id"The path of the route
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

related resource, relationship, action

A GET route to read the related resources of a relationship

Examples

related :comments, :read

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.relationship

relationship resource, relationship, action

A READ route to read the relationship, returns resource identifiers.

Examples

relationship :comments, :read

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/relationships/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.post_to_relationship

post_to_relationship resource, relationship

A POST route to create related entities using resource identifiers

Examples

post_to_relationship :comments

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/relationships/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.patch_relationship

patch_relationship resource, relationship

A PATCH route to update a relationship using resource identifiers

Examples

patch_relationship :comments

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/relationships/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.delete_from_relationship

delete_from_relationship resource, relationship

A DELETE route to remove related entities using resource identifiers

Examples

delete_from_relationship :comments

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
relationshipatom

Options

NameTypeDefaultDocs
routeString.tThe path of the route - Defaults to /:id/relationships/[relationship_name]
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.route

route resource, method, route, action

A route for a generic action.

Examples

route :get, "say_hi/:name", :say_hello"

Arguments

NameTypeDefaultDocs
resourcemoduleThe resource that the route's action is defined on
methodatomThe HTTP method for the route, e.g :get, or :post
routeString.tThe path of the route
actionatomThe action to call when this route is hit

Options

NameTypeDefaultDocs
wrap_in_result?booleanfalseWhether or not the action result should be wrapped in {result: <result>}
default_fieldslist(atom)A list of fields to be shown in the attributes of the called route
primary?booleanfalseWhether or not this is the route that should be linked to by default when rendering links to this type of route
metadata(any, any, any -> any)A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn(any, any, any, any -> any)A function to modify the conn before responding. Used for things like setting headers based on the response. Takes conn, subject, result, request
query_paramslist(atom)[]A list of action inputs to accept as query parameters.
nameString.tA globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?booleantrueWhether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?booleantrueWhether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route