# deleteContactNote

PERMANENTLY delete a note (by noteId): it leaves the contact's timeline with NO undo, so ALWAYS show its text and get their yes; a card counts. When only the wording is wrong use editContactNote, which is reversible. noteIds come from getContact (notes[]) or a NOTE entry in listContactActivities. One note per call; no bulk delete. Returns the owning contact with its REMAINING notes (the deleted one gone), so confirm the removal and show what is left rather than assert it worked. You can only delete a note you authored (or any note, if the key owner is a team admin); a note whose `author.kind` is AI is someone else's, so a NON-ADMIN key is refused on one.

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

## Variables

- `noteId`: `ID!` (required)

## Response (data, an example)

```json
{
  "noteMutation": {
    "deleteNote": {
      "id": "<ID>",
      "name": "…",
      "notes": [
        {
          "id": "<ID>",
          "body": "…",
          "createdAt": "2026-01-01T00:00:00.000Z"
        }
      ]
    }
  }
}
```

## 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": "deleteContactNote",
    "variables": {
      "noteId": "<noteId>"
    }
  }'
```
