# DomainRecord

> API reference for Domain Records (core.apoxy.dev/v1alpha3)

**API Group:** `core.apoxy.dev/v1alpha3`

## Operations

### List Domain Records

<APIEndpoint method="GET" path="/apis/core.apoxy.dev/v1alpha3/domainrecords" />

List DomainRecord

**Response**

- `200`: OK

---

### Create Domain Record

<APIEndpoint method="POST" path="/apis/core.apoxy.dev/v1alpha3/domainrecords" />

Create a DomainRecord

**Request Body**

Spec fields (`DomainRecordSpec`):

| Field | Type | Description |
| --- | --- | --- |
| `name` | string | Name is the DNS record name (e.g. "example.com", "www.example.com"). **(required)** |
| `target` | [DomainRecordTarget](#domainrecordtarget) | Target specifies the record data. **(required)** |
| `tls` | [DomainTLSSpec](#domaintlsspec) | TLS configures TLS certificate provisioning for this record's domains. Only valid when target.ref is set. |
| `ttl` | integer (int32) | TTL in seconds. Optional, defaults to 300. |
| `zone` | string | Zone is the name of the DomainZone that manages this record. Optional - empty means standalone (custom domain, not zone-managed). |

**Response**

- `200`: OK
- `201`: Created
- `202`: Accepted

---

### Delete All Domain Records

<APIEndpoint method="DELETE" path="/apis/core.apoxy.dev/v1alpha3/domainrecords" />

Delete collection of DomainRecord

**Response**

- `200`: OK

---

### Get Domain Record

<APIEndpoint method="GET" path="/apis/core.apoxy.dev/v1alpha3/domainrecords/{name}" />

Get the specified DomainRecord

**Response**

- `200`: OK

---

### Replace Domain Record

<APIEndpoint method="PUT" path="/apis/core.apoxy.dev/v1alpha3/domainrecords/{name}" />

Replace the specified DomainRecord

**Request Body**

Spec fields (`DomainRecordSpec`):

| Field | Type | Description |
| --- | --- | --- |
| `name` | string | Name is the DNS record name (e.g. "example.com", "www.example.com"). **(required)** |
| `target` | [DomainRecordTarget](#domainrecordtarget) | Target specifies the record data. **(required)** |
| `tls` | [DomainTLSSpec](#domaintlsspec) | TLS configures TLS certificate provisioning for this record's domains. Only valid when target.ref is set. |
| `ttl` | integer (int32) | TTL in seconds. Optional, defaults to 300. |
| `zone` | string | Zone is the name of the DomainZone that manages this record. Optional - empty means standalone (custom domain, not zone-managed). |

**Response**

- `200`: OK
- `201`: Created

---

### Update Domain Record

<APIEndpoint method="PATCH" path="/apis/core.apoxy.dev/v1alpha3/domainrecords/{name}" />

Partially update the specified DomainRecord

**Response**

- `200`: OK
- `201`: Created

---

### Delete Domain Record

<APIEndpoint method="DELETE" path="/apis/core.apoxy.dev/v1alpha3/domainrecords/{name}" />

Delete a DomainRecord

**Response**

- `200`: OK
- `202`: Accepted

---

## Schema Reference

### DomainRecordTarget

| Field | Type | Description |
| --- | --- | --- |
| `dns` | [DomainRecordTargetDNS](#domainrecordtargetdns) | DNS specifies the record data directly. Exactly one of DNS or Ref must be set. |
| `ref` | [LocalObjectReference](#localobjectreference) | Ref specifies a reference to another object within Apoxy (e.g. Proxy, Gateway, DomainRecord). Exactly one of DNS or Ref must be set. |

### DomainRecordTargetDNS

| Field | Type | Description |
| --- | --- | --- |
| `a` | string[] | A holds IPv4 A record addresses. |
| `aaaa` | string[] | AAAA holds IPv6 AAAA record addresses. |
| `caa` | string[] | CAA holds Certification Authority Authorization record values. |
| `dkim` | string[] | DKIM holds DKIM (DomainKeys Identified Mail) values. Values should be DKIM public key records (e.g. "v=DKIM1; k=rsa; p=..."). |
| `dmarc` | string[] | DMARC holds DMARC values. Values should follow DMARC syntax (e.g. "v=DMARC1; p=reject; rua=mailto:..."). |
| `dnskey` | string[] | DNSKEY holds DNSKEY records for DNSSEC. Values should be DNSKEY record data (e.g. "257 3 8 &lt;base64-encoded-key&gt;"). |
| `ds` | string[] | DS holds DS (Delegation Signer) records for DNSSEC chain of trust. Values should be DS record data (e.g. "12345 8 2 &lt;digest&gt;"). |
| `fqdn` | string | FQDN holds a CNAME record target. |
| `mx` | string[] | MX holds Mail Exchange record values (e.g. "10 mail.example.com"). |
| `ns` | string[] | NS holds Name Server record values. |
| `spf` | string[] | SPF holds SPF (Sender Policy Framework) values. Values should follow SPF syntax (e.g. "v=spf1 include:_spf.google.com ~all"). |
| `srv` | string[] | SRV holds Service Locator record values. |
| `txt` | string[] | TXT holds TXT record values. |

### LocalObjectReference

| Field | Type | Description |
| --- | --- | --- |
| `group` | string | Group is the API Group of the referenced object. **(required)** |
| `name` | string | Name is the name of the referenced object. **(required)** |

### DomainTLSSpec

| Field | Type | Description |
| --- | --- | --- |
| `certificateAuthority` | string | The Certificate Authority used to issue the TLS certificate. Currently supports "letsencrypt". |
