Skip to content

Latest commit

 

History

History
1215 lines (778 loc) · 67.7 KB

DSL-AshJsonApi.Domain.md

File metadata and controls

1215 lines (778 loc) · 67.7 KB

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

Name Type Default Docs
router{: #json_api-router } atom The router that you created for this Domain. Used by test helpers to send requests
show_raised_errors?{: #json_api-show_raised_errors? } boolean false For 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.
prefix{: #json_api-prefix } String.t The route prefix at which you are serving the JSON:API
serve_schema?{: #json_api-serve_schema? } boolean false Whether or not create a /schema route that serves the JSON schema of your API
authorize?{: #json_api-authorize? } boolean true Whether or not to perform authorization on requests.
log_errors?{: #json_api-log_errors? } boolean true Whether or not to log any errors produced
include_nil_values?{: #json_api-include_nil_values? } boolean true Whether 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

Name Type Default Docs
tag{: #json_api-open_api-tag } String.t Tag to be used when used by :group_by
group_by{: #json_api-open_api-group_by } :domain | :resource :resource Group 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

Name Type Default Docs
route{: #json_api-routes-base_route-route .spark-required} String.t The route prefix to use for contained routes
resource{: #json_api-routes-base_route-resource } module The 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

Name Type Default Docs
resource{: #json_api-routes-base_route-get-resource } module The resource that the route's action is defined on
action{: #json_api-routes-base_route-get-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
route{: #json_api-routes-base_route-get-route } String.t "/:id" The path of the route
default_fields{: #json_api-routes-base_route-get-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-get-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-get-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-get-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
name{: #json_api-routes-base_route-get-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-get-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-get-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-base_route-index-resource } module The resource that the route's action is defined on
action{: #json_api-routes-base_route-index-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
paginate?{: #json_api-routes-base_route-index-paginate? } boolean true
route{: #json_api-routes-base_route-index-route } String.t "/" The path of the route
default_fields{: #json_api-routes-base_route-index-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-index-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-index-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-index-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
name{: #json_api-routes-base_route-index-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-index-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-index-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-base_route-post-resource } module The resource that the route's action is defined on
action{: #json_api-routes-base_route-post-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
route{: #json_api-routes-base_route-post-route } String.t "/" The path of the route
default_fields{: #json_api-routes-base_route-post-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-post-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-post-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-post-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_params{: #json_api-routes-base_route-post-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-post-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-post-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-post-derive_filter? } boolean true Whether or not to derive a filter parameter based on the sortable fields of the resource
relationship_arguments{: #json_api-routes-base_route-post-relationship_arguments } list(atom | {:id, atom}) [] Arguments to be used to edit relationships. See the relationships guide for more.
upsert?{: #json_api-routes-base_route-post-upsert? } boolean false Whether or not to use the upsert?: true option when calling Ash.create/2.
upsert_identity{: #json_api-routes-base_route-post-upsert_identity } atom false Which 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

Name Type Default Docs
resource{: #json_api-routes-base_route-patch-resource } module The resource that the route's action is defined on
action{: #json_api-routes-base_route-patch-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
relationship_arguments{: #json_api-routes-base_route-patch-relationship_arguments } any [] Arguments to be used to edit relationships. See the relationships guide for more.
read_action{: #json_api-routes-base_route-patch-read_action } atom The read action to use to look the record up before updating
route{: #json_api-routes-base_route-patch-route } String.t "/:id" The path of the route
default_fields{: #json_api-routes-base_route-patch-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-patch-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-patch-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-patch-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_params{: #json_api-routes-base_route-patch-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-patch-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-patch-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-patch-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-base_route-delete-resource } module The resource that the route's action is defined on
action{: #json_api-routes-base_route-delete-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
read_action{: #json_api-routes-base_route-delete-read_action } atom The read action to use to look the record up before updating
route{: #json_api-routes-base_route-delete-route } String.t "/:id" The path of the route
default_fields{: #json_api-routes-base_route-delete-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-delete-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-delete-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-delete-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_params{: #json_api-routes-base_route-delete-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-delete-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-delete-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-delete-derive_filter? } boolean true Whether 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.related

related resource \\ nil, relationship, action

A GET route to read the related resources of a relationship

Examples

related :comments, :read

Arguments

Name Type Default Docs
resource{: #json_api-routes-base_route-related-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-base_route-related-relationship .spark-required} atom
action{: #json_api-routes-base_route-related-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
route{: #json_api-routes-base_route-related-route } String.t The path of the route - Defaults to /:id/[relationship_name]
default_fields{: #json_api-routes-base_route-related-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-related-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-related-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-related-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_params{: #json_api-routes-base_route-related-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-related-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-related-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-related-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-base_route-relationship-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-base_route-relationship-relationship .spark-required} atom
action{: #json_api-routes-base_route-relationship-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
route{: #json_api-routes-base_route-relationship-route } String.t The path of the route - Defaults to /:id/relationships/[relationship_name]
default_fields{: #json_api-routes-base_route-relationship-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-relationship-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-relationship-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-relationship-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_params{: #json_api-routes-base_route-relationship-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-relationship-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-relationship-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-relationship-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-base_route-post_to_relationship-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-base_route-post_to_relationship-relationship .spark-required} atom

Options

Name Type Default Docs
route{: #json_api-routes-base_route-post_to_relationship-route } String.t The path of the route - Defaults to /:id/relationships/[relationship_name]
default_fields{: #json_api-routes-base_route-post_to_relationship-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-post_to_relationship-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-post_to_relationship-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-post_to_relationship-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_params{: #json_api-routes-base_route-post_to_relationship-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-post_to_relationship-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-post_to_relationship-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-post_to_relationship-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-base_route-patch_relationship-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-base_route-patch_relationship-relationship .spark-required} atom

Options

Name Type Default Docs
route{: #json_api-routes-base_route-patch_relationship-route } String.t The path of the route - Defaults to /:id/relationships/[relationship_name]
default_fields{: #json_api-routes-base_route-patch_relationship-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-patch_relationship-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-patch_relationship-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-patch_relationship-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_params{: #json_api-routes-base_route-patch_relationship-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-patch_relationship-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-patch_relationship-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-patch_relationship-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-base_route-delete_from_relationship-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-base_route-delete_from_relationship-relationship .spark-required} atom

Options

Name Type Default Docs
route{: #json_api-routes-base_route-delete_from_relationship-route } String.t The path of the route - Defaults to /:id/relationships/[relationship_name]
default_fields{: #json_api-routes-base_route-delete_from_relationship-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-delete_from_relationship-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-delete_from_relationship-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-delete_from_relationship-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_params{: #json_api-routes-base_route-delete_from_relationship-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-delete_from_relationship-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-delete_from_relationship-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-delete_from_relationship-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-base_route-route-resource } module The resource that the route's action is defined on
method{: #json_api-routes-base_route-route-method .spark-required} atom The HTTP method for the route, e.g :get, or :post
route{: #json_api-routes-base_route-route-route .spark-required} String.t The path of the route
action{: #json_api-routes-base_route-route-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
wrap_in_result?{: #json_api-routes-base_route-route-wrap_in_result? } boolean false Whether or not the action result should be wrapped in {result: <result>}
default_fields{: #json_api-routes-base_route-route-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-base_route-route-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-base_route-route-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-base_route-route-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_params{: #json_api-routes-base_route-route-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-base_route-route-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-base_route-route-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-base_route-route-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-get-resource } module The resource that the route's action is defined on
action{: #json_api-routes-get-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
route{: #json_api-routes-get-route } String.t "/:id" The path of the route
default_fields{: #json_api-routes-get-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-get-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-get-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-get-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
name{: #json_api-routes-get-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-get-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-get-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-index-resource } module The resource that the route's action is defined on
action{: #json_api-routes-index-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
paginate?{: #json_api-routes-index-paginate? } boolean true
route{: #json_api-routes-index-route } String.t "/" The path of the route
default_fields{: #json_api-routes-index-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-index-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-index-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-index-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
name{: #json_api-routes-index-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-index-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-index-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-post-resource } module The resource that the route's action is defined on
action{: #json_api-routes-post-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
route{: #json_api-routes-post-route } String.t "/" The path of the route
default_fields{: #json_api-routes-post-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-post-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-post-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-post-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_params{: #json_api-routes-post-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-post-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-post-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-post-derive_filter? } boolean true Whether or not to derive a filter parameter based on the sortable fields of the resource
relationship_arguments{: #json_api-routes-post-relationship_arguments } list(atom | {:id, atom}) [] Arguments to be used to edit relationships. See the relationships guide for more.
upsert?{: #json_api-routes-post-upsert? } boolean false Whether or not to use the upsert?: true option when calling Ash.create/2.
upsert_identity{: #json_api-routes-post-upsert_identity } atom false Which 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

Name Type Default Docs
resource{: #json_api-routes-patch-resource } module The resource that the route's action is defined on
action{: #json_api-routes-patch-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
relationship_arguments{: #json_api-routes-patch-relationship_arguments } any [] Arguments to be used to edit relationships. See the relationships guide for more.
read_action{: #json_api-routes-patch-read_action } atom The read action to use to look the record up before updating
route{: #json_api-routes-patch-route } String.t "/:id" The path of the route
default_fields{: #json_api-routes-patch-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-patch-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-patch-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-patch-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_params{: #json_api-routes-patch-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-patch-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-patch-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-patch-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-delete-resource } module The resource that the route's action is defined on
action{: #json_api-routes-delete-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
read_action{: #json_api-routes-delete-read_action } atom The read action to use to look the record up before updating
route{: #json_api-routes-delete-route } String.t "/:id" The path of the route
default_fields{: #json_api-routes-delete-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-delete-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-delete-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-delete-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_params{: #json_api-routes-delete-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-delete-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-delete-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-delete-derive_filter? } boolean true Whether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

json_api.routes.related

related resource, relationship, action

A GET route to read the related resources of a relationship

Examples

related :comments, :read

Arguments

Name Type Default Docs
resource{: #json_api-routes-related-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-related-relationship .spark-required} atom
action{: #json_api-routes-related-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
route{: #json_api-routes-related-route } String.t The path of the route - Defaults to /:id/[relationship_name]
default_fields{: #json_api-routes-related-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-related-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-related-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-related-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_params{: #json_api-routes-related-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-related-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-related-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-related-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-relationship-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-relationship-relationship .spark-required} atom
action{: #json_api-routes-relationship-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
route{: #json_api-routes-relationship-route } String.t The path of the route - Defaults to /:id/relationships/[relationship_name]
default_fields{: #json_api-routes-relationship-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-relationship-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-relationship-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-relationship-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_params{: #json_api-routes-relationship-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-relationship-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-relationship-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-relationship-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-post_to_relationship-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-post_to_relationship-relationship .spark-required} atom

Options

Name Type Default Docs
route{: #json_api-routes-post_to_relationship-route } String.t The path of the route - Defaults to /:id/relationships/[relationship_name]
default_fields{: #json_api-routes-post_to_relationship-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-post_to_relationship-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-post_to_relationship-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-post_to_relationship-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_params{: #json_api-routes-post_to_relationship-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-post_to_relationship-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-post_to_relationship-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-post_to_relationship-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-patch_relationship-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-patch_relationship-relationship .spark-required} atom

Options

Name Type Default Docs
route{: #json_api-routes-patch_relationship-route } String.t The path of the route - Defaults to /:id/relationships/[relationship_name]
default_fields{: #json_api-routes-patch_relationship-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-patch_relationship-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-patch_relationship-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-patch_relationship-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_params{: #json_api-routes-patch_relationship-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-patch_relationship-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-patch_relationship-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-patch_relationship-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-delete_from_relationship-resource } module The resource that the route's action is defined on
relationship{: #json_api-routes-delete_from_relationship-relationship .spark-required} atom

Options

Name Type Default Docs
route{: #json_api-routes-delete_from_relationship-route } String.t The path of the route - Defaults to /:id/relationships/[relationship_name]
default_fields{: #json_api-routes-delete_from_relationship-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-delete_from_relationship-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-delete_from_relationship-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-delete_from_relationship-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_params{: #json_api-routes-delete_from_relationship-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-delete_from_relationship-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-delete_from_relationship-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-delete_from_relationship-derive_filter? } boolean true Whether 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

Name Type Default Docs
resource{: #json_api-routes-route-resource } module The resource that the route's action is defined on
method{: #json_api-routes-route-method .spark-required} atom The HTTP method for the route, e.g :get, or :post
route{: #json_api-routes-route-route .spark-required} String.t The path of the route
action{: #json_api-routes-route-action .spark-required} atom The action to call when this route is hit

Options

Name Type Default Docs
wrap_in_result?{: #json_api-routes-route-wrap_in_result? } boolean false Whether or not the action result should be wrapped in {result: <result>}
default_fields{: #json_api-routes-route-default_fields } list(atom) A list of fields to be shown in the attributes of the called route
primary?{: #json_api-routes-route-primary? } boolean false Whether or not this is the route that should be linked to by default when rendering links to this type of route
metadata{: #json_api-routes-route-metadata } (any, any, any -> any) A function to generate arbitrary top-level metadata for the JSON:API response
modify_conn{: #json_api-routes-route-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_params{: #json_api-routes-route-query_params } list(atom) [] A list of action inputs to accept as query parameters.
name{: #json_api-routes-route-name } String.t A globally unique name for this route, to be used when generating docs and open api specifications
derive_sort?{: #json_api-routes-route-derive_sort? } boolean true Whether or not to derive a sort parameter based on the sortable fields of the resource
derive_filter?{: #json_api-routes-route-derive_filter? } boolean true Whether or not to derive a filter parameter based on the sortable fields of the resource

Introspection

Target: AshJsonApi.Resource.Route

<style type="text/css">.spark-required::after { content: "*"; color: red !important; }</style>