# suppressChannel

Value-level opt-out: block a phone number or email address for your organization on one medium (SMS, VOICE or EMAIL). Keyed on the normalized VALUE, not a contact: every contact carrying it, now and later, is blocked on send. SMS/VOICE take a phone in any format, EMAIL an address; an unparseable one is rejected (INVALID_PHONE_NUMBER / INVALID_INPUT). Idempotent. Blocks only the medium named (send VOICE too for calls). A person in the app clears it, or a developer-API key with clearChannelSuppression. Returns organizationId, normalizedValue, medium.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "suppressChannel", "variables": {...} }`
- Scope: `WRITE`
- Type: mutation
- Idempotency: honors `Idempotency-Key` (24 h)
- Rate-limited: no

## Variables

- `value`: `String!` (required)
- `medium`: `SuppressionMedium!` (required, one of `SMS`, `VOICE`, `EMAIL`). The channel a value-level opt-out suppresses. SMS/VOICE take a phone value; EMAIL takes an email address.
- `reason`: `String`

## Response (data, an example)

```json
{
  "contactMutation": {
    "suppressChannel": {
      "organizationId": "<ID>",
      "normalizedValue": "…",
      "medium": "SMS"
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "operationId": "suppressChannel",
    "variables": {
      "value": "<String>",
      "medium": "SMS"
    }
  }'
```
