> For the complete documentation index, see [llms.txt](https://docs.dnscontrol.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dnscontrol.org/provider/mittwald.md).

# mittwald

### Configuration

To use this provider, add an entry to `creds.json` with `TYPE` set to `MITTWALD` along with an [mStudio API token](https://developer.mittwald.de/docs/v2/api/intro/).

Example:

{% code title="creds.json" %}

```json
{
  "mittwald": {
    "TYPE": "MITTWALD",
    "api_token": "your-api-token"
  }
}
```

{% endcode %}

The token belongs to an mStudio user. The provider finds each domain in the projects that user can access.

### Metadata

This provider does not recognize any special metadata fields unique to mittwald.

### Usage

An example configuration:

{% code title="dnsconfig.js" %}

```javascript
var REG_NONE = NewRegistrar("none");
var DSP_MITTWALD = NewDnsProvider("mittwald");

D("example.com", REG_NONE, DnsProvider(DSP_MITTWALD),
    A("test", "1.2.3.4"),
);
```

{% endcode %}

### Activation

Create an API token in mStudio under your user profile. A domain can be managed once it is part of an mStudio project; the provider does not create zones.

### Caveats

#### One zone per name

mStudio stores every name as its own zone: `example.com`, `www.example.com` and `_dmarc.example.com` are three zones. The provider creates the zone of a name when a record is added to it and deletes it when its last record is removed; the domain's own zone, a zone with a set that mStudio manages and a zone with other zones below it stay.

#### Record sets

Each name holds one set per type: A and AAAA together, CNAME, MX, TXT, SRV and CAA. All records of a set share one TTL; when the A and AAAA records of a name have different TTLs, the provider uses the lower one for both and warns about it. A set holds at most 10 A, 10 AAAA, 10 MX or 20 TXT records.

#### Records managed by mStudio

mStudio sets the addresses of a name that is connected to an ingress, and the mail exchangers of its mail service. The provider neither shows nor changes these sets. Declaring A, AAAA or MX records for such a name replaces the managed set with the declared records. A CNAME cannot be added to a name that has a managed set.

#### Unsupported records

Wildcard names (`*`), NS records, a null MX (`MX("@", 0, ".")`), an MX preference above 100, empty TXT records, TXT records that end with a space, and CAA values other than a host name (no parameters, no `iodef` URL) are not accepted by mStudio and are rejected by `dnscontrol check`.

#### TTL

mStudio accepts TTLs between 60 and 86400 seconds; the provider raises a lower TTL to 60 and lowers a higher one to 86400. A set whose TTL is "auto" in mStudio is served with a TTL of 60 and read as such.

#### Rate limit

mStudio allows an API user 3000 requests in 600 seconds. When a response says the limit is used up, the provider waits for its reset. A request that is still answered with "too many requests", because another client of the same user used the limit, is repeated for up to 11 minutes.

### Feature Summary

* Provider Type
  * [Official Support](/provider/index.md#providers-with-official-support): ❌
  * DNS Provider: ✅
  * Registrar: ❌
* Provider API
  * [Concurrency Verified](/advanced-features/concurrency-verified.md): ❌
  * [dual host](/advanced-features/dual-host.md): ❌
  * create-domains: ❌
  * [get-zones](/commands/get-zones.md): ❌
* DNS extensions
  * [`ALIAS`](/language-reference/domain-modifiers/alias.md): ❌
  * [`DNAME`](/language-reference/domain-modifiers/dname.md): ❌
  * [`LOC`](/language-reference/domain-modifiers/loc.md): ❌
  * [`PTR`](/language-reference/domain-modifiers/ptr.md): ❌
  * [`SOA`](/language-reference/domain-modifiers/soa.md): ❌
* Service discovery
  * [`DHCID`](/language-reference/domain-modifiers/dhcid.md): ❌
  * [`NAPTR`](/language-reference/domain-modifiers/naptr.md): ❌
  * [`SRV`](/language-reference/domain-modifiers/srv.md): ✅
  * [`SVCB`](/language-reference/domain-modifiers/svcb.md): ❌
* Security
  * [`CAA`](/language-reference/domain-modifiers/caa.md): ✅
  * [`HTTPS`](/language-reference/domain-modifiers/https.md): ❌
  * [`SMIMEA`](/language-reference/domain-modifiers/smimea.md): ❌
  * [`SSHFP`](/language-reference/domain-modifiers/sshfp.md): ❌
  * [`TLSA`](/language-reference/domain-modifiers/tlsa.md): ❌
* DNSSEC
  * [`AUTODNSSEC`](/language-reference/domain-modifiers/autodnssec_on.md): ❌
  * [`DNSKEY`](/language-reference/domain-modifiers/dnskey.md): ❌
  * [`DS`](/language-reference/domain-modifiers/ds.md): ❌
