# FormParty

Party role definitions for forms

Canonical URL: https://docs.paradoc.dev/schemas/artifacts/form/party/

FormParty defines what roles exist and what constraints apply when filling a form. Parties are the people or organizations that participate in a form, such as signers, witnesses, or other stakeholders.

Party data format is determined by the `max` property:

* `max = 1` (default): single party object with required `id`
* `max > 1`: array of party objects, each with required `id`

ID convention: `{role}-{index}` (e.g., "tenant-0", "landlord-1")

## Properties

| Name | Type | Description |
| --- | --- | --- |
| `label` | `string` | Human-readable role name |
| `description?` | `string` | Description of this role |
| `partyType?` | `'person' \| 'organization' \| 'any'` | Constraint on party type |
| `min?` | `number` | Minimum parties required. Defaults to 1 |
| `max?` | `number` | Maximum parties allowed. Defaults to 1. When max > 1, party data must be an array |
| `required?` | `boolean \| string` | Whether this role is required. Can be boolean or expression |
| `signature?` | `FormSignature` | Signature requirements for this role |
| `payment?` | `FormPayment` | Payment requirement for this role |

The `signature` property is a [FormSignature](/schemas/artifacts/form/signature).

### FormPayment

Payment requirement for a party role.

| Name | Type | Description |
| --- | --- | --- |
| `required?` | `boolean` | Whether payment is required for this role. Defaults to false |
| `amount` | `Money \| MoneyExpression` | Amount owed: a fixed Money value, or a MoneyExpression resolved from filled data at request time |

## Examples

### Single Party (Default)

When `max` is 1 (or omitted), the party data is a single object:



**YAML**

```yaml
parties:
  landlord:
    label: Landlord
    partyType: any
    required: true
    signature:
      required: true
```

**JSON**

```json
{
  "parties": {
    "landlord": {
      "label": "Landlord",
      "partyType": "any",
      "required": true,
      "signature": {
        "required": true
      }
    }
  }
}
```

Runtime data for single party:

```json
{
  "parties": {
    "landlord": {
      "id": "landlord-0",
      "name": "ABC Property LLC"
    }
  }
}
```

### Multiple Parties

When `max > 1`, the party data must be an array:



**YAML**

```yaml
parties:
  tenant:
    label: Tenant
    partyType: person
    min: 1
    max: 4
    required: true
    signature:
      required: true
      witnesses: 1
```

**JSON**

```json
{
  "parties": {
    "tenant": {
      "label": "Tenant",
      "partyType": "person",
      "min": 1,
      "max": 4,
      "required": true,
      "signature": {
        "required": true,
        "witnesses": 1
      }
    }
  }
}
```

Runtime data for multiple parties:

```json
{
  "parties": {
    "tenant": [
      { "id": "tenant-0", "name": "Jane Smith" },
      { "id": "tenant-1", "name": "John Smith" }
    ]
  }
}
```

## Related

* [Form](/schemas/artifacts/form) - Form artifact overview
* [FormSignature](/schemas/artifacts/form/signature) - Signature requirements for a role
