# Gandi Arova

> Manage arova-ai.com domain DNS records and email via the Gandi REST API. Use this skill whenever the user wants to: add/edit/delete DNS records for arova-ai.com, manage email forwarding or mailboxes, check MX/SPF/DKIM settings, create email aliases, set up subdomains, or troubleshoot DNS issues for the Arova domain. Also trigger when the user mentions: DNS, A record, CNAME, MX record, TXT record, email forwarding, mailbox, arova-ai.com, 網域, DNS 設定, 郵件轉寄, 信箱, SPF, DKIM.

- Skill: `arova-ai/gandi-arova` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add arova-ai/gandi-arova`
- Raw SKILL.md: https://api.skillmd.com/api/skills/arova-ai/gandi-arova/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: arova-ai (https://skillmd.com/u/arova-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/arova-ai/gandi-arova

---


# Gandi API for arova-ai.com

Manage DNS records and email for the `arova-ai.com` domain using the Gandi REST API.

## Authentication

The Gandi Personal Access Token (PAT) is stored in 1Password under the item name `gandi-ewill-pat`.

Before making any API call, retrieve the token:

```bash
GANDI_PAT=$(op read "op://project-ewill/gandi-ewill-pat/credential")
```

Then use it in all API requests as a Bearer token:

```bash
curl -s -H "Authorization: Bearer $GANDI_PAT" ...
```

## Domain

All operations target the domain `arova-ai.com`. The base URL is:

```
https://api.gandi.net/v5
```

## Quick Reference

### DNS Records

Read `references/livedns-api.md` for complete endpoint documentation. Here are the most common operations:

**List all DNS records:**
```bash
curl -s -H "Authorization: Bearer $GANDI_PAT" \
  "https://api.gandi.net/v5/livedns/domains/arova-ai.com/records" | jq .
```

**Get a specific record (e.g., A record for @):**
```bash
curl -s -H "Authorization: Bearer $GANDI_PAT" \
  "https://api.gandi.net/v5/livedns/domains/arova-ai.com/records/@/A" | jq .
```

**Create/update a record (PUT overwrites, POST creates if not exists):**
```bash
curl -s -X PUT -H "Authorization: Bearer $GANDI_PAT" \
  -H "Content-Type: application/json" \
  -d '{"rrset_values": ["192.0.2.1"], "rrset_ttl": 3600}' \
  "https://api.gandi.net/v5/livedns/domains/arova-ai.com/records/www/CNAME"
```

**Delete a record:**
```bash
curl -s -X DELETE -H "Authorization: Bearer $GANDI_PAT" \
  "https://api.gandi.net/v5/livedns/domains/arova-ai.com/records/test/A"
```

**Common record types:**
- `A` — IPv4 address
- `AAAA` — IPv6 address
- `CNAME` — Alias to another domain (value must end with `.`)
- `MX` — Mail exchange (value: `"10 mail.example.com."`)
- `TXT` — Text record (value must be quoted: `"\"v=spf1 ...\""``)
- `NS` — Nameserver delegation

**TTL range:** 300 to 2,592,000 seconds (5 min to 30 days).

### Email — Forwarding

**List all forwarding addresses:**
```bash
curl -s -H "Authorization: Bearer $GANDI_PAT" \
  "https://api.gandi.net/v5/email/forwards/arova-ai.com" | jq .
```

**Create a forwarding address:**
```bash
curl -s -X POST -H "Authorization: Bearer $GANDI_PAT" \
  -H "Content-Type: application/json" \
  -d '{"source": "info", "destinations": ["kyle@example.com"]}' \
  "https://api.gandi.net/v5/email/forwards/arova-ai.com"
```

**Update forwarding destinations:**
```bash
curl -s -X PUT -H "Authorization: Bearer $GANDI_PAT" \
  -H "Content-Type: application/json" \
  -d '{"destinations": ["kyle@example.com", "team@example.com"]}' \
  "https://api.gandi.net/v5/email/forwards/arova-ai.com/info"
```

**Delete a forwarding address:**
```bash
curl -s -X DELETE -H "Authorization: Bearer $GANDI_PAT" \
  "https://api.gandi.net/v5/email/forwards/arova-ai.com/info"
```

### Email — Mailboxes

**List all mailboxes:**
```bash
curl -s -H "Authorization: Bearer $GANDI_PAT" \
  "https://api.gandi.net/v5/email/mailboxes/arova-ai.com" | jq .
```

**Create a mailbox:**
```bash
curl -s -X POST -H "Authorization: Bearer $GANDI_PAT" \
  -H "Content-Type: application/json" \
  -d '{"login": "support", "mailbox_type": "standard_2023", "password": "SecureP@ss123!", "aliases": ["help"], "antispam": true}' \
  "https://api.gandi.net/v5/email/mailboxes/arova-ai.com"
```

Password requirements: 8-200 chars, min 1 uppercase, 3 numbers, 1 special character.

**Update a mailbox (aliases, password, responder):**
```bash
curl -s -X PATCH -H "Authorization: Bearer $GANDI_PAT" \
  -H "Content-Type: application/json" \
  -d '{"aliases": ["help", "info"]}' \
  "https://api.gandi.net/v5/email/mailboxes/arova-ai.com/{mailbox_id}"
```

### Email — Domain Settings

**Check email offer status (antispam, DKIM):**
```bash
curl -s -H "Authorization: Bearer $GANDI_PAT" \
  "https://api.gandi.net/v5/email/offers/arova-ai.com" | jq .
```

**Enable DKIM and antispam:**
```bash
curl -s -X PATCH -H "Authorization: Bearer $GANDI_PAT" \
  -H "Content-Type: application/json" \
  -d '{"antispam": "active", "dkim": "active"}' \
  "https://api.gandi.net/v5/email/offers/arova-ai.com"
```

## Workflow Guidelines

1. **Always retrieve the PAT from 1Password first** — never hardcode it or ask the user for it.

2. **Before modifying DNS, list current records** — show the user what exists before making changes. This prevents accidental overwrites.

3. **Use PUT for overwrites, PATCH for additions** — when adding values to an existing record (like adding an IP to an A record), use PATCH with `add_rrset_values`. When replacing the entire record, use PUT.

4. **Create a snapshot before bulk changes** — for safety:
   ```bash
   curl -s -X POST -H "Authorization: Bearer $GANDI_PAT" \
     -H "Content-Type: application/json" \
     -d '{"name": "before-changes-YYYY-MM-DD"}' \
     "https://api.gandi.net/v5/livedns/domains/arova-ai.com/snapshots"
   ```

5. **Confirm destructive operations** — always show the user what will be deleted/overwritten and ask for confirmation before executing DELETE or zone-wide PUT operations.

6. **Format output clearly** — pipe responses through `jq` for readability. For record listings, present them in a table format.

## Reference Files

For complete API endpoint documentation, read:
- `references/livedns-api.md` — All LiveDNS endpoints, parameters, and response formats
- `references/email-api.md` — All Email endpoints for forwards, mailboxes, offers, and slots

