<!--
This file was generated by Spark. Do not edit it by hand.
-->
# GuardedStruct



## guardedstruct


### Nested DSLs
 * [field](#guardedstruct-field)
 * [virtual_field](#guardedstruct-virtual_field)
 * [dynamic_field](#guardedstruct-dynamic_field)
 * [sub_field](#guardedstruct-sub_field)
   * conditional_field
     * field
     * sub_field
       * field
   * sub_field
     * field
   * field
 * [conditional_field](#guardedstruct-conditional_field)
   * sub_field
     * conditional_field
       * field
       * sub_field
         * field
     * sub_field
       * field
     * field
   * conditional_field
     * field
     * sub_field
       * field
   * field





### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-enforce){: #guardedstruct-enforce } | `boolean` | `false` |  |
| [`opaque`](#guardedstruct-opaque){: #guardedstruct-opaque } | `boolean` | `false` |  |
| [`module`](#guardedstruct-module){: #guardedstruct-module } | `any` |  |  |
| [`error`](#guardedstruct-error){: #guardedstruct-error } | `boolean` | `false` |  |
| [`authorized_fields`](#guardedstruct-authorized_fields){: #guardedstruct-authorized_fields } | `boolean` | `false` |  |
| [`main_validator`](#guardedstruct-main_validator){: #guardedstruct-main_validator } | `{atom, atom}` |  | A `{Module, :function}` called with the attributes once every field has passed its validator; it returns `{:ok, attrs}` or `{:error, errors}`. When it is not set, a `main_validator/1` defined in the module is called instead. |
| [`validate_derive`](#guardedstruct-validate_derive){: #guardedstruct-validate_derive } | `atom \| list(atom)` |  | A module, or a list of modules, whose `validate/3` serves the `validate(...)` ops the built-in ones and the derive extensions do not know. They are tried before the `:validate_derive` application config, which still serves the ops they do not handle. |
| [`sanitize_derive`](#guardedstruct-sanitize_derive){: #guardedstruct-sanitize_derive } | `atom \| list(atom)` |  | A module, or a list of modules, whose `sanitize/2` serves the `sanitize(...)` ops the built-in ones and the derive extensions do not know. They are tried before the `:sanitize_derive` application config, which still serves the ops they do not handle. |
| [`json`](#guardedstruct-json){: #guardedstruct-json } | `boolean` | `false` | When `true`, derives a JSON encoder. Uses `Jason.Encoder` if `:jason` is in the user's deps; otherwise falls back to the built-in `JSON.Encoder` on Elixir 1.18+. No-op if neither is available. |
| [`auto_wire`](#guardedstruct-auto_wire){: #guardedstruct-auto_wire } | `boolean` | `false` | Only effective inside the `GuardedStruct.AshResource` extension. When `true`, injects `GuardedStruct.AshResource.Change` into the resource's top-level `changes` section so every `:create` and `:update` action automatically runs the GuardedStruct pipeline. Equivalent to writing `changes do change GuardedStruct.AshResource.Change end` by hand. No-op outside the Ash extension. |



### guardedstruct.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-field-name){: #guardedstruct-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-field-type){: #guardedstruct-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-field-enforce){: #guardedstruct-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-field-default){: #guardedstruct-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-field-derives){: #guardedstruct-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-field-derive){: #guardedstruct-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-field-validator){: #guardedstruct-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-field-auto){: #guardedstruct-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-field-from){: #guardedstruct-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-field-on){: #guardedstruct-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-field-domain){: #guardedstruct-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-field-struct){: #guardedstruct-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-field-structs){: #guardedstruct-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-field-hint){: #guardedstruct-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-field-priority){: #guardedstruct-field-priority } | `boolean` |  |  |






### guardedstruct.virtual_field
```elixir
virtual_field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-virtual_field-name){: #guardedstruct-virtual_field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-virtual_field-type){: #guardedstruct-virtual_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-virtual_field-enforce){: #guardedstruct-virtual_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-virtual_field-default){: #guardedstruct-virtual_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-virtual_field-derives){: #guardedstruct-virtual_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-virtual_field-derive){: #guardedstruct-virtual_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-virtual_field-validator){: #guardedstruct-virtual_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-virtual_field-auto){: #guardedstruct-virtual_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-virtual_field-from){: #guardedstruct-virtual_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-virtual_field-on){: #guardedstruct-virtual_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-virtual_field-domain){: #guardedstruct-virtual_field-domain } | `String.t` |  |  |
| [`hint`](#guardedstruct-virtual_field-hint){: #guardedstruct-virtual_field-hint } | `String.t` |  |  |






### guardedstruct.dynamic_field
```elixir
dynamic_field name
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-dynamic_field-name){: #guardedstruct-dynamic_field-name .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`type`](#guardedstruct-dynamic_field-type){: #guardedstruct-dynamic_field-type } | `any` | `{:map, [], []}` |  |
| [`enforce`](#guardedstruct-dynamic_field-enforce){: #guardedstruct-dynamic_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-dynamic_field-default){: #guardedstruct-dynamic_field-default } | `any` | `%{}` |  |
| [`derives`](#guardedstruct-dynamic_field-derives){: #guardedstruct-dynamic_field-derives } | `String.t` | `"validate(map)"` |  |
| [`derive`](#guardedstruct-dynamic_field-derive){: #guardedstruct-dynamic_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-dynamic_field-validator){: #guardedstruct-dynamic_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-dynamic_field-auto){: #guardedstruct-dynamic_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-dynamic_field-from){: #guardedstruct-dynamic_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-dynamic_field-on){: #guardedstruct-dynamic_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-dynamic_field-domain){: #guardedstruct-dynamic_field-domain } | `String.t` |  |  |
| [`hint`](#guardedstruct-dynamic_field-hint){: #guardedstruct-dynamic_field-hint } | `String.t` |  |  |






### guardedstruct.sub_field
```elixir
sub_field name, type
```




### Nested DSLs
 * [conditional_field](#guardedstruct-sub_field-conditional_field)
   * field
   * sub_field
     * field
 * [sub_field](#guardedstruct-sub_field-sub_field)
   * field
 * [field](#guardedstruct-sub_field-field)




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-sub_field-name){: #guardedstruct-sub_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-sub_field-type){: #guardedstruct-sub_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-sub_field-enforce){: #guardedstruct-sub_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-sub_field-default){: #guardedstruct-sub_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-sub_field-derives){: #guardedstruct-sub_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-sub_field-derive){: #guardedstruct-sub_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-sub_field-validator){: #guardedstruct-sub_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-sub_field-auto){: #guardedstruct-sub_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-sub_field-from){: #guardedstruct-sub_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-sub_field-on){: #guardedstruct-sub_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-sub_field-domain){: #guardedstruct-sub_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-sub_field-struct){: #guardedstruct-sub_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-sub_field-structs){: #guardedstruct-sub_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-sub_field-hint){: #guardedstruct-sub_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-sub_field-priority){: #guardedstruct-sub_field-priority } | `boolean` |  |  |
| [`error`](#guardedstruct-sub_field-error){: #guardedstruct-sub_field-error } | `boolean` |  |  |
| [`authorized_fields`](#guardedstruct-sub_field-authorized_fields){: #guardedstruct-sub_field-authorized_fields } | `boolean` |  |  |
| [`main_validator`](#guardedstruct-sub_field-main_validator){: #guardedstruct-sub_field-main_validator } | `{atom, atom}` |  | A `{Module, :function}` called with the sub_field's validated attributes, like the section option. A `main_validator/1` defined in the parent module does not run for a sub_field. |


### guardedstruct.sub_field.conditional_field
```elixir
conditional_field name, type
```




### Nested DSLs
 * [field](#guardedstruct-sub_field-conditional_field-field)
 * [sub_field](#guardedstruct-sub_field-conditional_field-sub_field)
   * field




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-sub_field-conditional_field-name){: #guardedstruct-sub_field-conditional_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-sub_field-conditional_field-type){: #guardedstruct-sub_field-conditional_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-sub_field-conditional_field-enforce){: #guardedstruct-sub_field-conditional_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-sub_field-conditional_field-default){: #guardedstruct-sub_field-conditional_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-sub_field-conditional_field-derives){: #guardedstruct-sub_field-conditional_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-sub_field-conditional_field-derive){: #guardedstruct-sub_field-conditional_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-sub_field-conditional_field-validator){: #guardedstruct-sub_field-conditional_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-sub_field-conditional_field-auto){: #guardedstruct-sub_field-conditional_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-sub_field-conditional_field-from){: #guardedstruct-sub_field-conditional_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-sub_field-conditional_field-on){: #guardedstruct-sub_field-conditional_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-sub_field-conditional_field-domain){: #guardedstruct-sub_field-conditional_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-sub_field-conditional_field-struct){: #guardedstruct-sub_field-conditional_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-sub_field-conditional_field-structs){: #guardedstruct-sub_field-conditional_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-sub_field-conditional_field-hint){: #guardedstruct-sub_field-conditional_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-sub_field-conditional_field-priority){: #guardedstruct-sub_field-conditional_field-priority } | `boolean` |  |  |


### guardedstruct.sub_field.conditional_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-sub_field-conditional_field-field-name){: #guardedstruct-sub_field-conditional_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-sub_field-conditional_field-field-type){: #guardedstruct-sub_field-conditional_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-sub_field-conditional_field-field-enforce){: #guardedstruct-sub_field-conditional_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-sub_field-conditional_field-field-default){: #guardedstruct-sub_field-conditional_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-sub_field-conditional_field-field-derives){: #guardedstruct-sub_field-conditional_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-sub_field-conditional_field-field-derive){: #guardedstruct-sub_field-conditional_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-sub_field-conditional_field-field-validator){: #guardedstruct-sub_field-conditional_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-sub_field-conditional_field-field-auto){: #guardedstruct-sub_field-conditional_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-sub_field-conditional_field-field-from){: #guardedstruct-sub_field-conditional_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-sub_field-conditional_field-field-on){: #guardedstruct-sub_field-conditional_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-sub_field-conditional_field-field-domain){: #guardedstruct-sub_field-conditional_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-sub_field-conditional_field-field-struct){: #guardedstruct-sub_field-conditional_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-sub_field-conditional_field-field-structs){: #guardedstruct-sub_field-conditional_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-sub_field-conditional_field-field-hint){: #guardedstruct-sub_field-conditional_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-sub_field-conditional_field-field-priority){: #guardedstruct-sub_field-conditional_field-field-priority } | `boolean` |  |  |






### guardedstruct.sub_field.conditional_field.sub_field
```elixir
sub_field name, type
```




### Nested DSLs
 * [field](#guardedstruct-sub_field-conditional_field-sub_field-field)




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-sub_field-conditional_field-sub_field-name){: #guardedstruct-sub_field-conditional_field-sub_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-sub_field-conditional_field-sub_field-type){: #guardedstruct-sub_field-conditional_field-sub_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-sub_field-conditional_field-sub_field-enforce){: #guardedstruct-sub_field-conditional_field-sub_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-sub_field-conditional_field-sub_field-default){: #guardedstruct-sub_field-conditional_field-sub_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-sub_field-conditional_field-sub_field-derives){: #guardedstruct-sub_field-conditional_field-sub_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-sub_field-conditional_field-sub_field-derive){: #guardedstruct-sub_field-conditional_field-sub_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-sub_field-conditional_field-sub_field-validator){: #guardedstruct-sub_field-conditional_field-sub_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-sub_field-conditional_field-sub_field-auto){: #guardedstruct-sub_field-conditional_field-sub_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-sub_field-conditional_field-sub_field-from){: #guardedstruct-sub_field-conditional_field-sub_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-sub_field-conditional_field-sub_field-on){: #guardedstruct-sub_field-conditional_field-sub_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-sub_field-conditional_field-sub_field-domain){: #guardedstruct-sub_field-conditional_field-sub_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-sub_field-conditional_field-sub_field-struct){: #guardedstruct-sub_field-conditional_field-sub_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-sub_field-conditional_field-sub_field-structs){: #guardedstruct-sub_field-conditional_field-sub_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-sub_field-conditional_field-sub_field-hint){: #guardedstruct-sub_field-conditional_field-sub_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-sub_field-conditional_field-sub_field-priority){: #guardedstruct-sub_field-conditional_field-sub_field-priority } | `boolean` |  |  |
| [`error`](#guardedstruct-sub_field-conditional_field-sub_field-error){: #guardedstruct-sub_field-conditional_field-sub_field-error } | `boolean` |  |  |
| [`authorized_fields`](#guardedstruct-sub_field-conditional_field-sub_field-authorized_fields){: #guardedstruct-sub_field-conditional_field-sub_field-authorized_fields } | `boolean` |  |  |
| [`main_validator`](#guardedstruct-sub_field-conditional_field-sub_field-main_validator){: #guardedstruct-sub_field-conditional_field-sub_field-main_validator } | `{atom, atom}` |  | A `{Module, :function}` called with the sub_field's validated attributes, like the section option. A `main_validator/1` defined in the parent module does not run for a sub_field. |


### guardedstruct.sub_field.conditional_field.sub_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-sub_field-conditional_field-sub_field-field-name){: #guardedstruct-sub_field-conditional_field-sub_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-sub_field-conditional_field-sub_field-field-type){: #guardedstruct-sub_field-conditional_field-sub_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-sub_field-conditional_field-sub_field-field-enforce){: #guardedstruct-sub_field-conditional_field-sub_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-sub_field-conditional_field-sub_field-field-default){: #guardedstruct-sub_field-conditional_field-sub_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-sub_field-conditional_field-sub_field-field-derives){: #guardedstruct-sub_field-conditional_field-sub_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-sub_field-conditional_field-sub_field-field-derive){: #guardedstruct-sub_field-conditional_field-sub_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-sub_field-conditional_field-sub_field-field-validator){: #guardedstruct-sub_field-conditional_field-sub_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-sub_field-conditional_field-sub_field-field-auto){: #guardedstruct-sub_field-conditional_field-sub_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-sub_field-conditional_field-sub_field-field-from){: #guardedstruct-sub_field-conditional_field-sub_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-sub_field-conditional_field-sub_field-field-on){: #guardedstruct-sub_field-conditional_field-sub_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-sub_field-conditional_field-sub_field-field-domain){: #guardedstruct-sub_field-conditional_field-sub_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-sub_field-conditional_field-sub_field-field-struct){: #guardedstruct-sub_field-conditional_field-sub_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-sub_field-conditional_field-sub_field-field-structs){: #guardedstruct-sub_field-conditional_field-sub_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-sub_field-conditional_field-sub_field-field-hint){: #guardedstruct-sub_field-conditional_field-sub_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-sub_field-conditional_field-sub_field-field-priority){: #guardedstruct-sub_field-conditional_field-sub_field-field-priority } | `boolean` |  |  |














### guardedstruct.sub_field.sub_field
```elixir
sub_field name, type
```




### Nested DSLs
 * [field](#guardedstruct-sub_field-sub_field-field)




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-sub_field-sub_field-name){: #guardedstruct-sub_field-sub_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-sub_field-sub_field-type){: #guardedstruct-sub_field-sub_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-sub_field-sub_field-enforce){: #guardedstruct-sub_field-sub_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-sub_field-sub_field-default){: #guardedstruct-sub_field-sub_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-sub_field-sub_field-derives){: #guardedstruct-sub_field-sub_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-sub_field-sub_field-derive){: #guardedstruct-sub_field-sub_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-sub_field-sub_field-validator){: #guardedstruct-sub_field-sub_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-sub_field-sub_field-auto){: #guardedstruct-sub_field-sub_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-sub_field-sub_field-from){: #guardedstruct-sub_field-sub_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-sub_field-sub_field-on){: #guardedstruct-sub_field-sub_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-sub_field-sub_field-domain){: #guardedstruct-sub_field-sub_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-sub_field-sub_field-struct){: #guardedstruct-sub_field-sub_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-sub_field-sub_field-structs){: #guardedstruct-sub_field-sub_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-sub_field-sub_field-hint){: #guardedstruct-sub_field-sub_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-sub_field-sub_field-priority){: #guardedstruct-sub_field-sub_field-priority } | `boolean` |  |  |
| [`error`](#guardedstruct-sub_field-sub_field-error){: #guardedstruct-sub_field-sub_field-error } | `boolean` |  |  |
| [`authorized_fields`](#guardedstruct-sub_field-sub_field-authorized_fields){: #guardedstruct-sub_field-sub_field-authorized_fields } | `boolean` |  |  |
| [`main_validator`](#guardedstruct-sub_field-sub_field-main_validator){: #guardedstruct-sub_field-sub_field-main_validator } | `{atom, atom}` |  | A `{Module, :function}` called with the sub_field's validated attributes, like the section option. A `main_validator/1` defined in the parent module does not run for a sub_field. |


### guardedstruct.sub_field.sub_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-sub_field-sub_field-field-name){: #guardedstruct-sub_field-sub_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-sub_field-sub_field-field-type){: #guardedstruct-sub_field-sub_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-sub_field-sub_field-field-enforce){: #guardedstruct-sub_field-sub_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-sub_field-sub_field-field-default){: #guardedstruct-sub_field-sub_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-sub_field-sub_field-field-derives){: #guardedstruct-sub_field-sub_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-sub_field-sub_field-field-derive){: #guardedstruct-sub_field-sub_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-sub_field-sub_field-field-validator){: #guardedstruct-sub_field-sub_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-sub_field-sub_field-field-auto){: #guardedstruct-sub_field-sub_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-sub_field-sub_field-field-from){: #guardedstruct-sub_field-sub_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-sub_field-sub_field-field-on){: #guardedstruct-sub_field-sub_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-sub_field-sub_field-field-domain){: #guardedstruct-sub_field-sub_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-sub_field-sub_field-field-struct){: #guardedstruct-sub_field-sub_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-sub_field-sub_field-field-structs){: #guardedstruct-sub_field-sub_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-sub_field-sub_field-field-hint){: #guardedstruct-sub_field-sub_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-sub_field-sub_field-field-priority){: #guardedstruct-sub_field-sub_field-field-priority } | `boolean` |  |  |










### guardedstruct.sub_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-sub_field-field-name){: #guardedstruct-sub_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-sub_field-field-type){: #guardedstruct-sub_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-sub_field-field-enforce){: #guardedstruct-sub_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-sub_field-field-default){: #guardedstruct-sub_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-sub_field-field-derives){: #guardedstruct-sub_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-sub_field-field-derive){: #guardedstruct-sub_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-sub_field-field-validator){: #guardedstruct-sub_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-sub_field-field-auto){: #guardedstruct-sub_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-sub_field-field-from){: #guardedstruct-sub_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-sub_field-field-on){: #guardedstruct-sub_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-sub_field-field-domain){: #guardedstruct-sub_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-sub_field-field-struct){: #guardedstruct-sub_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-sub_field-field-structs){: #guardedstruct-sub_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-sub_field-field-hint){: #guardedstruct-sub_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-sub_field-field-priority){: #guardedstruct-sub_field-field-priority } | `boolean` |  |  |










### guardedstruct.conditional_field
```elixir
conditional_field name, type
```




### Nested DSLs
 * [sub_field](#guardedstruct-conditional_field-sub_field)
   * conditional_field
     * field
     * sub_field
       * field
   * sub_field
     * field
   * field
 * [conditional_field](#guardedstruct-conditional_field-conditional_field)
   * field
   * sub_field
     * field
 * [field](#guardedstruct-conditional_field-field)




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-name){: #guardedstruct-conditional_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-conditional_field-type){: #guardedstruct-conditional_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-enforce){: #guardedstruct-conditional_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-default){: #guardedstruct-conditional_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-derives){: #guardedstruct-conditional_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-derive){: #guardedstruct-conditional_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-validator){: #guardedstruct-conditional_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-auto){: #guardedstruct-conditional_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-from){: #guardedstruct-conditional_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-on){: #guardedstruct-conditional_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-domain){: #guardedstruct-conditional_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-struct){: #guardedstruct-conditional_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-structs){: #guardedstruct-conditional_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-hint){: #guardedstruct-conditional_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-priority){: #guardedstruct-conditional_field-priority } | `boolean` |  |  |


### guardedstruct.conditional_field.sub_field
```elixir
sub_field name, type
```




### Nested DSLs
 * [conditional_field](#guardedstruct-conditional_field-sub_field-conditional_field)
   * field
   * sub_field
     * field
 * [sub_field](#guardedstruct-conditional_field-sub_field-sub_field)
   * field
 * [field](#guardedstruct-conditional_field-sub_field-field)




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-sub_field-name){: #guardedstruct-conditional_field-sub_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-conditional_field-sub_field-type){: #guardedstruct-conditional_field-sub_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-sub_field-enforce){: #guardedstruct-conditional_field-sub_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-sub_field-default){: #guardedstruct-conditional_field-sub_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-sub_field-derives){: #guardedstruct-conditional_field-sub_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-sub_field-derive){: #guardedstruct-conditional_field-sub_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-sub_field-validator){: #guardedstruct-conditional_field-sub_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-sub_field-auto){: #guardedstruct-conditional_field-sub_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-sub_field-from){: #guardedstruct-conditional_field-sub_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-sub_field-on){: #guardedstruct-conditional_field-sub_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-sub_field-domain){: #guardedstruct-conditional_field-sub_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-sub_field-struct){: #guardedstruct-conditional_field-sub_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-sub_field-structs){: #guardedstruct-conditional_field-sub_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-sub_field-hint){: #guardedstruct-conditional_field-sub_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-sub_field-priority){: #guardedstruct-conditional_field-sub_field-priority } | `boolean` |  |  |
| [`error`](#guardedstruct-conditional_field-sub_field-error){: #guardedstruct-conditional_field-sub_field-error } | `boolean` |  |  |
| [`authorized_fields`](#guardedstruct-conditional_field-sub_field-authorized_fields){: #guardedstruct-conditional_field-sub_field-authorized_fields } | `boolean` |  |  |
| [`main_validator`](#guardedstruct-conditional_field-sub_field-main_validator){: #guardedstruct-conditional_field-sub_field-main_validator } | `{atom, atom}` |  | A `{Module, :function}` called with the sub_field's validated attributes, like the section option. A `main_validator/1` defined in the parent module does not run for a sub_field. |


### guardedstruct.conditional_field.sub_field.conditional_field
```elixir
conditional_field name, type
```




### Nested DSLs
 * [field](#guardedstruct-conditional_field-sub_field-conditional_field-field)
 * [sub_field](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field)
   * field




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-sub_field-conditional_field-name){: #guardedstruct-conditional_field-sub_field-conditional_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-conditional_field-sub_field-conditional_field-type){: #guardedstruct-conditional_field-sub_field-conditional_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-sub_field-conditional_field-enforce){: #guardedstruct-conditional_field-sub_field-conditional_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-sub_field-conditional_field-default){: #guardedstruct-conditional_field-sub_field-conditional_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-sub_field-conditional_field-derives){: #guardedstruct-conditional_field-sub_field-conditional_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-sub_field-conditional_field-derive){: #guardedstruct-conditional_field-sub_field-conditional_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-sub_field-conditional_field-validator){: #guardedstruct-conditional_field-sub_field-conditional_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-sub_field-conditional_field-auto){: #guardedstruct-conditional_field-sub_field-conditional_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-sub_field-conditional_field-from){: #guardedstruct-conditional_field-sub_field-conditional_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-sub_field-conditional_field-on){: #guardedstruct-conditional_field-sub_field-conditional_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-sub_field-conditional_field-domain){: #guardedstruct-conditional_field-sub_field-conditional_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-sub_field-conditional_field-struct){: #guardedstruct-conditional_field-sub_field-conditional_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-sub_field-conditional_field-structs){: #guardedstruct-conditional_field-sub_field-conditional_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-sub_field-conditional_field-hint){: #guardedstruct-conditional_field-sub_field-conditional_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-sub_field-conditional_field-priority){: #guardedstruct-conditional_field-sub_field-conditional_field-priority } | `boolean` |  |  |


### guardedstruct.conditional_field.sub_field.conditional_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-sub_field-conditional_field-field-name){: #guardedstruct-conditional_field-sub_field-conditional_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-conditional_field-sub_field-conditional_field-field-type){: #guardedstruct-conditional_field-sub_field-conditional_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-sub_field-conditional_field-field-enforce){: #guardedstruct-conditional_field-sub_field-conditional_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-sub_field-conditional_field-field-default){: #guardedstruct-conditional_field-sub_field-conditional_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-sub_field-conditional_field-field-derives){: #guardedstruct-conditional_field-sub_field-conditional_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-sub_field-conditional_field-field-derive){: #guardedstruct-conditional_field-sub_field-conditional_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-sub_field-conditional_field-field-validator){: #guardedstruct-conditional_field-sub_field-conditional_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-sub_field-conditional_field-field-auto){: #guardedstruct-conditional_field-sub_field-conditional_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-sub_field-conditional_field-field-from){: #guardedstruct-conditional_field-sub_field-conditional_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-sub_field-conditional_field-field-on){: #guardedstruct-conditional_field-sub_field-conditional_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-sub_field-conditional_field-field-domain){: #guardedstruct-conditional_field-sub_field-conditional_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-sub_field-conditional_field-field-struct){: #guardedstruct-conditional_field-sub_field-conditional_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-sub_field-conditional_field-field-structs){: #guardedstruct-conditional_field-sub_field-conditional_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-sub_field-conditional_field-field-hint){: #guardedstruct-conditional_field-sub_field-conditional_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-sub_field-conditional_field-field-priority){: #guardedstruct-conditional_field-sub_field-conditional_field-field-priority } | `boolean` |  |  |






### guardedstruct.conditional_field.sub_field.conditional_field.sub_field
```elixir
sub_field name, type
```




### Nested DSLs
 * [field](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field)




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-name){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-type){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-enforce){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-default){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-derives){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-derive){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-validator){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-auto){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-from){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-on){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-domain){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-struct){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-structs){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-hint){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-priority){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-priority } | `boolean` |  |  |
| [`error`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-error){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-error } | `boolean` |  |  |
| [`authorized_fields`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-authorized_fields){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-authorized_fields } | `boolean` |  |  |
| [`main_validator`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-main_validator){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-main_validator } | `{atom, atom}` |  | A `{Module, :function}` called with the sub_field's validated attributes, like the section option. A `main_validator/1` defined in the parent module does not run for a sub_field. |


### guardedstruct.conditional_field.sub_field.conditional_field.sub_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-name){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-type){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-enforce){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-default){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-derives){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-derive){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-validator){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-auto){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-from){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-on){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-domain){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-struct){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-structs){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-hint){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-priority){: #guardedstruct-conditional_field-sub_field-conditional_field-sub_field-field-priority } | `boolean` |  |  |














### guardedstruct.conditional_field.sub_field.sub_field
```elixir
sub_field name, type
```




### Nested DSLs
 * [field](#guardedstruct-conditional_field-sub_field-sub_field-field)




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-sub_field-sub_field-name){: #guardedstruct-conditional_field-sub_field-sub_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-conditional_field-sub_field-sub_field-type){: #guardedstruct-conditional_field-sub_field-sub_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-sub_field-sub_field-enforce){: #guardedstruct-conditional_field-sub_field-sub_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-sub_field-sub_field-default){: #guardedstruct-conditional_field-sub_field-sub_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-sub_field-sub_field-derives){: #guardedstruct-conditional_field-sub_field-sub_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-sub_field-sub_field-derive){: #guardedstruct-conditional_field-sub_field-sub_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-sub_field-sub_field-validator){: #guardedstruct-conditional_field-sub_field-sub_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-sub_field-sub_field-auto){: #guardedstruct-conditional_field-sub_field-sub_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-sub_field-sub_field-from){: #guardedstruct-conditional_field-sub_field-sub_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-sub_field-sub_field-on){: #guardedstruct-conditional_field-sub_field-sub_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-sub_field-sub_field-domain){: #guardedstruct-conditional_field-sub_field-sub_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-sub_field-sub_field-struct){: #guardedstruct-conditional_field-sub_field-sub_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-sub_field-sub_field-structs){: #guardedstruct-conditional_field-sub_field-sub_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-sub_field-sub_field-hint){: #guardedstruct-conditional_field-sub_field-sub_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-sub_field-sub_field-priority){: #guardedstruct-conditional_field-sub_field-sub_field-priority } | `boolean` |  |  |
| [`error`](#guardedstruct-conditional_field-sub_field-sub_field-error){: #guardedstruct-conditional_field-sub_field-sub_field-error } | `boolean` |  |  |
| [`authorized_fields`](#guardedstruct-conditional_field-sub_field-sub_field-authorized_fields){: #guardedstruct-conditional_field-sub_field-sub_field-authorized_fields } | `boolean` |  |  |
| [`main_validator`](#guardedstruct-conditional_field-sub_field-sub_field-main_validator){: #guardedstruct-conditional_field-sub_field-sub_field-main_validator } | `{atom, atom}` |  | A `{Module, :function}` called with the sub_field's validated attributes, like the section option. A `main_validator/1` defined in the parent module does not run for a sub_field. |


### guardedstruct.conditional_field.sub_field.sub_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-sub_field-sub_field-field-name){: #guardedstruct-conditional_field-sub_field-sub_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-conditional_field-sub_field-sub_field-field-type){: #guardedstruct-conditional_field-sub_field-sub_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-sub_field-sub_field-field-enforce){: #guardedstruct-conditional_field-sub_field-sub_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-sub_field-sub_field-field-default){: #guardedstruct-conditional_field-sub_field-sub_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-sub_field-sub_field-field-derives){: #guardedstruct-conditional_field-sub_field-sub_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-sub_field-sub_field-field-derive){: #guardedstruct-conditional_field-sub_field-sub_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-sub_field-sub_field-field-validator){: #guardedstruct-conditional_field-sub_field-sub_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-sub_field-sub_field-field-auto){: #guardedstruct-conditional_field-sub_field-sub_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-sub_field-sub_field-field-from){: #guardedstruct-conditional_field-sub_field-sub_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-sub_field-sub_field-field-on){: #guardedstruct-conditional_field-sub_field-sub_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-sub_field-sub_field-field-domain){: #guardedstruct-conditional_field-sub_field-sub_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-sub_field-sub_field-field-struct){: #guardedstruct-conditional_field-sub_field-sub_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-sub_field-sub_field-field-structs){: #guardedstruct-conditional_field-sub_field-sub_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-sub_field-sub_field-field-hint){: #guardedstruct-conditional_field-sub_field-sub_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-sub_field-sub_field-field-priority){: #guardedstruct-conditional_field-sub_field-sub_field-field-priority } | `boolean` |  |  |










### guardedstruct.conditional_field.sub_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-sub_field-field-name){: #guardedstruct-conditional_field-sub_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-conditional_field-sub_field-field-type){: #guardedstruct-conditional_field-sub_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-sub_field-field-enforce){: #guardedstruct-conditional_field-sub_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-sub_field-field-default){: #guardedstruct-conditional_field-sub_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-sub_field-field-derives){: #guardedstruct-conditional_field-sub_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-sub_field-field-derive){: #guardedstruct-conditional_field-sub_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-sub_field-field-validator){: #guardedstruct-conditional_field-sub_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-sub_field-field-auto){: #guardedstruct-conditional_field-sub_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-sub_field-field-from){: #guardedstruct-conditional_field-sub_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-sub_field-field-on){: #guardedstruct-conditional_field-sub_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-sub_field-field-domain){: #guardedstruct-conditional_field-sub_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-sub_field-field-struct){: #guardedstruct-conditional_field-sub_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-sub_field-field-structs){: #guardedstruct-conditional_field-sub_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-sub_field-field-hint){: #guardedstruct-conditional_field-sub_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-sub_field-field-priority){: #guardedstruct-conditional_field-sub_field-field-priority } | `boolean` |  |  |










### guardedstruct.conditional_field.conditional_field
```elixir
conditional_field name, type
```




### Nested DSLs
 * [field](#guardedstruct-conditional_field-conditional_field-field)
 * [sub_field](#guardedstruct-conditional_field-conditional_field-sub_field)
   * field




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-conditional_field-name){: #guardedstruct-conditional_field-conditional_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-conditional_field-conditional_field-type){: #guardedstruct-conditional_field-conditional_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-conditional_field-enforce){: #guardedstruct-conditional_field-conditional_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-conditional_field-default){: #guardedstruct-conditional_field-conditional_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-conditional_field-derives){: #guardedstruct-conditional_field-conditional_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-conditional_field-derive){: #guardedstruct-conditional_field-conditional_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-conditional_field-validator){: #guardedstruct-conditional_field-conditional_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-conditional_field-auto){: #guardedstruct-conditional_field-conditional_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-conditional_field-from){: #guardedstruct-conditional_field-conditional_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-conditional_field-on){: #guardedstruct-conditional_field-conditional_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-conditional_field-domain){: #guardedstruct-conditional_field-conditional_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-conditional_field-struct){: #guardedstruct-conditional_field-conditional_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-conditional_field-structs){: #guardedstruct-conditional_field-conditional_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-conditional_field-hint){: #guardedstruct-conditional_field-conditional_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-conditional_field-priority){: #guardedstruct-conditional_field-conditional_field-priority } | `boolean` |  |  |


### guardedstruct.conditional_field.conditional_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-conditional_field-field-name){: #guardedstruct-conditional_field-conditional_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-conditional_field-conditional_field-field-type){: #guardedstruct-conditional_field-conditional_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-conditional_field-field-enforce){: #guardedstruct-conditional_field-conditional_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-conditional_field-field-default){: #guardedstruct-conditional_field-conditional_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-conditional_field-field-derives){: #guardedstruct-conditional_field-conditional_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-conditional_field-field-derive){: #guardedstruct-conditional_field-conditional_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-conditional_field-field-validator){: #guardedstruct-conditional_field-conditional_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-conditional_field-field-auto){: #guardedstruct-conditional_field-conditional_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-conditional_field-field-from){: #guardedstruct-conditional_field-conditional_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-conditional_field-field-on){: #guardedstruct-conditional_field-conditional_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-conditional_field-field-domain){: #guardedstruct-conditional_field-conditional_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-conditional_field-field-struct){: #guardedstruct-conditional_field-conditional_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-conditional_field-field-structs){: #guardedstruct-conditional_field-conditional_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-conditional_field-field-hint){: #guardedstruct-conditional_field-conditional_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-conditional_field-field-priority){: #guardedstruct-conditional_field-conditional_field-field-priority } | `boolean` |  |  |






### guardedstruct.conditional_field.conditional_field.sub_field
```elixir
sub_field name, type
```




### Nested DSLs
 * [field](#guardedstruct-conditional_field-conditional_field-sub_field-field)




### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-conditional_field-sub_field-name){: #guardedstruct-conditional_field-conditional_field-sub_field-name .spark-required} | `atom` |  |  |
| [`type`](#guardedstruct-conditional_field-conditional_field-sub_field-type){: #guardedstruct-conditional_field-conditional_field-sub_field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-conditional_field-sub_field-enforce){: #guardedstruct-conditional_field-conditional_field-sub_field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-conditional_field-sub_field-default){: #guardedstruct-conditional_field-conditional_field-sub_field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-conditional_field-sub_field-derives){: #guardedstruct-conditional_field-conditional_field-sub_field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-conditional_field-sub_field-derive){: #guardedstruct-conditional_field-conditional_field-sub_field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-conditional_field-sub_field-validator){: #guardedstruct-conditional_field-conditional_field-sub_field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-conditional_field-sub_field-auto){: #guardedstruct-conditional_field-conditional_field-sub_field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-conditional_field-sub_field-from){: #guardedstruct-conditional_field-conditional_field-sub_field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-conditional_field-sub_field-on){: #guardedstruct-conditional_field-conditional_field-sub_field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-conditional_field-sub_field-domain){: #guardedstruct-conditional_field-conditional_field-sub_field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-conditional_field-sub_field-struct){: #guardedstruct-conditional_field-conditional_field-sub_field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-conditional_field-sub_field-structs){: #guardedstruct-conditional_field-conditional_field-sub_field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-conditional_field-sub_field-hint){: #guardedstruct-conditional_field-conditional_field-sub_field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-conditional_field-sub_field-priority){: #guardedstruct-conditional_field-conditional_field-sub_field-priority } | `boolean` |  |  |
| [`error`](#guardedstruct-conditional_field-conditional_field-sub_field-error){: #guardedstruct-conditional_field-conditional_field-sub_field-error } | `boolean` |  |  |
| [`authorized_fields`](#guardedstruct-conditional_field-conditional_field-sub_field-authorized_fields){: #guardedstruct-conditional_field-conditional_field-sub_field-authorized_fields } | `boolean` |  |  |
| [`main_validator`](#guardedstruct-conditional_field-conditional_field-sub_field-main_validator){: #guardedstruct-conditional_field-conditional_field-sub_field-main_validator } | `{atom, atom}` |  | A `{Module, :function}` called with the sub_field's validated attributes, like the section option. A `main_validator/1` defined in the parent module does not run for a sub_field. |


### guardedstruct.conditional_field.conditional_field.sub_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-conditional_field-sub_field-field-name){: #guardedstruct-conditional_field-conditional_field-sub_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-conditional_field-conditional_field-sub_field-field-type){: #guardedstruct-conditional_field-conditional_field-sub_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-conditional_field-sub_field-field-enforce){: #guardedstruct-conditional_field-conditional_field-sub_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-conditional_field-sub_field-field-default){: #guardedstruct-conditional_field-conditional_field-sub_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-conditional_field-sub_field-field-derives){: #guardedstruct-conditional_field-conditional_field-sub_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-conditional_field-sub_field-field-derive){: #guardedstruct-conditional_field-conditional_field-sub_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-conditional_field-sub_field-field-validator){: #guardedstruct-conditional_field-conditional_field-sub_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-conditional_field-sub_field-field-auto){: #guardedstruct-conditional_field-conditional_field-sub_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-conditional_field-sub_field-field-from){: #guardedstruct-conditional_field-conditional_field-sub_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-conditional_field-sub_field-field-on){: #guardedstruct-conditional_field-conditional_field-sub_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-conditional_field-sub_field-field-domain){: #guardedstruct-conditional_field-conditional_field-sub_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-conditional_field-sub_field-field-struct){: #guardedstruct-conditional_field-conditional_field-sub_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-conditional_field-sub_field-field-structs){: #guardedstruct-conditional_field-conditional_field-sub_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-conditional_field-sub_field-field-hint){: #guardedstruct-conditional_field-conditional_field-sub_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-conditional_field-sub_field-field-priority){: #guardedstruct-conditional_field-conditional_field-sub_field-field-priority } | `boolean` |  |  |














### guardedstruct.conditional_field.field
```elixir
field name, type
```








### Arguments

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#guardedstruct-conditional_field-field-name){: #guardedstruct-conditional_field-field-name .spark-required} | `any` |  |  |
| [`type`](#guardedstruct-conditional_field-field-type){: #guardedstruct-conditional_field-field-type .spark-required} | `any` |  |  |
### Options

| Name | Type | Default | Docs |
|------|------|---------|------|
| [`enforce`](#guardedstruct-conditional_field-field-enforce){: #guardedstruct-conditional_field-field-enforce } | `boolean` |  |  |
| [`default`](#guardedstruct-conditional_field-field-default){: #guardedstruct-conditional_field-field-default } | `any` |  |  |
| [`derives`](#guardedstruct-conditional_field-field-derives){: #guardedstruct-conditional_field-field-derives } | `String.t` |  |  |
| [`derive`](#guardedstruct-conditional_field-field-derive){: #guardedstruct-conditional_field-field-derive } | `String.t` |  |  |
| [`validator`](#guardedstruct-conditional_field-field-validator){: #guardedstruct-conditional_field-field-validator } | `{atom, atom}` |  |  |
| [`auto`](#guardedstruct-conditional_field-field-auto){: #guardedstruct-conditional_field-field-auto } | `{atom, atom} \| {atom, atom, any}` |  |  |
| [`from`](#guardedstruct-conditional_field-field-from){: #guardedstruct-conditional_field-field-from } | `String.t` |  |  |
| [`on`](#guardedstruct-conditional_field-field-on){: #guardedstruct-conditional_field-field-on } | `String.t` |  |  |
| [`domain`](#guardedstruct-conditional_field-field-domain){: #guardedstruct-conditional_field-field-domain } | `String.t` |  |  |
| [`struct`](#guardedstruct-conditional_field-field-struct){: #guardedstruct-conditional_field-field-struct } | `atom` |  |  |
| [`structs`](#guardedstruct-conditional_field-field-structs){: #guardedstruct-conditional_field-field-structs } | `atom \| boolean` |  |  |
| [`hint`](#guardedstruct-conditional_field-field-hint){: #guardedstruct-conditional_field-field-hint } | `String.t` |  |  |
| [`priority`](#guardedstruct-conditional_field-field-priority){: #guardedstruct-conditional_field-field-priority } | `boolean` |  |  |














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