---
title: "Argument Sets"
slug: "argument-sets"
updated: 2022-07-22T17:29:13Z
published: 2022-07-22T17:29:13Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://code.tag.bio/llms.txt
> Use this file to discover all available pages before exploring further.

# Argument Sets

`Arguments` are interface components for the user to configure a protocol. Individual `arguments` are bundled into an `argument_set` as a way to combine common logic in addition to enforcing decisions.

## argument_sets

The `argument_set` array is used within a `protocol_definition`. Perhaps you have multiple `arguments` for a user to investigate patient demographics. The `argument_set` can contain in-line or filepath references to each demographic argument with a name to display the purpose for group.

```
"argument_sets": [
  {
    "argument_set_type": "aaaa",
    "name": "Text displayed to user",
    "arguments": [...]
  },
  {...} //add more argument_sets
]
```

## argument_set_type

All `argument_sets` have a type as a way to gate the necessity of choice to a user. Without conforming to the `argument_set_type`, the 'Run Protocol' button will be inactive.

```
"argument_set_type": "mandatory"
```

`mandatory` requires the user to make a selection amongst all of the `arguments` provided within the `argument_set`.

```
"argument_set_type": "minimum-one"
```

`minimum-one` requires at least one selection amongst all of the `arguments` provided within the `argument_set`.

```
"argument_set_type": "maximum-one"
```

`maximum-one` will only activate the *Run Protocol* button when one, and only one, `argument` selection is made by the user.

```
"argument_set_type": "optional"
```

`optional` does not affect the behavior of the *Run Protocol* button, because the user is has no requirements to fulfill.
