# getContractSendDraft

Step 1 of preparing a contract: a PUBLISHED template filled for one contact (optionally a deal, and contactBId for a co-seller). Returns the template version, the CRM-filled `values` (a `required` one left blank needs a value: their words or ask, never an invented price, date or address), `missingTokens`, one suggested recipient per role, and the subject, message and expiry. Needs the manage contracts capability. Then prepareContract.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "getContractSendDraft", "variables": {...} }`
- Scope: `READ`
- Type: query
- Idempotency: a read; rejects `Idempotency-Key`
- Rate-limited: no

## Variables

- `input`: `AdminContractSendStartInput!` (required)
  - `templateId`: `ID!` (required)
  - `contactId`: `ID!` (required)
  - `pipelineItemId`: `ID`. Optional deal for the deal merge fields; must belong to the same organization.
  - `dealId`: `ID`
  - `contactBId`: `ID`. Optional Contact B (a co-seller) for the template's second contact role.

## Response (data, an example)

```json
{
  "contractsQuery": {
    "sendDraft": {
      "templateId": "<ID>",
      "templateVersionId": "<ID>",
      "templateName": "…",
      "title": "…",
      "dealId": "<ID>",
      "contact": {
        "id": "<ID>",
        "name": "…",
        "emails": [
          "…"
        ],
        "phones": [
          "…"
        ]
      },
      "contactB": {
        "id": "<ID>",
        "name": "…",
        "emails": [
          "…"
        ],
        "phones": [
          "…"
        ]
      },
      "values": [
        {
          "key": "<ID>",
          "label": "…",
          "source": "TOKENS",
          "required": true,
          "value": "…",
          "record": "CONTACT"
        }
      ],
      "missingTokens": [
        "…"
      ],
      "roles": [
        {
          "key": "<ID>",
          "label": "…",
          "kind": "SIGNER",
          "order": 0
        }
      ],
      "recipients": [
        {
          "roleKey": "<ID>",
          "displayName": "…",
          "email": "…",
          "phone": "…",
          "contactId": "<ID>",
          "signingOrder": 0
        }
      ],
      "subject": "…",
      "message": "…",
      "expiryDays": 0,
      "reminderIntervalDays": 0
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "getContractSendDraft",
    "variables": {
      "input": {
        "templateId": "<templateId>",
        "contactId": "<contactId>"
      }
    }
  }'
```
