diff --git a/build/generate/featureMatrix.go b/build/generate/featureMatrix.go
index f23d05a4a..db1e45970 100644
--- a/build/generate/featureMatrix.go
+++ b/build/generate/featureMatrix.go
@@ -38,7 +38,7 @@ func markdownTable(matrix *FeatureMatrix) (string, error) {
featureMap := matrix.Providers[providerName]
var tableDataRow []string
- tableDataRow = append(tableDataRow, "[`"+providerName+"`](providers/"+strings.ToLower(providerName)+".md)")
+ tableDataRow = append(tableDataRow, "[`"+providerName+"`](provider/"+strings.ToLower(providerName)+".md)")
for _, featureName := range matrix.Features {
tableDataRow = append(tableDataRow, featureEmoji(featureMap, featureName))
}
diff --git a/commands/types/dnscontrol.d.ts b/commands/types/dnscontrol.d.ts
index fe89377d1..01d2246dd 100644
--- a/commands/types/dnscontrol.d.ts
+++ b/commands/types/dnscontrol.d.ts
@@ -2407,7 +2407,7 @@ declare function R53_EVALUATE_TARGET_HEALTH(enabled: boolean): RecordModifier;
/**
* `R53_ZONE` lets you specify the AWS Zone ID for an entire domain ([`D()`](../top-level-functions/D.md)) or a specific [`R53_ALIAS()`](../domain-modifiers/R53_ALIAS.md) record.
*
- * When used with [`D()`](../top-level-functions/D.md), it sets the zone id of the domain. This can be used to differentiate between split horizon domains in public and private zones. See this [example](../../providers/route53.md#split-horizon) in the [Amazon Route 53 provider page](../../providers/route53.md).
+ * When used with [`D()`](../top-level-functions/D.md), it sets the zone id of the domain. This can be used to differentiate between split horizon domains in public and private zones. See this [example](../../provider/route53.md#split-horizon) in the [Amazon Route 53 provider page](../../provider/route53.md).
*
* When used with [`R53_ALIAS()`](../domain-modifiers/R53_ALIAS.md) it sets the required Route53 hosted zone id in a R53_ALIAS record. See [`R53_ALIAS()`](../domain-modifiers/R53_ALIAS.md) documentation for details.
*
@@ -2546,7 +2546,7 @@ declare function REVCOMPAT(rfc: string): string;
* * Most providers automatically generate SOA records. They will ignore any `SOA()` statements.
* * The mbox field should not be set to a real email address unless you love spam and hate your privacy.
*
- * There is more info about `SOA` in the documentation for the [BIND provider](../../providers/bind.md).
+ * There is more info about `SOA` in the documentation for the [BIND provider](../../provider/bind.md).
*
* @see https://docs.dnscontrol.org/language-reference/domain-modifiers/soa
*/
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
index 1aa9bff60..18db05159 100644
--- a/docs/_layouts/default.html
+++ b/docs/_layouts/default.html
@@ -37,7 +37,7 @@
- Getting Started
- Language Reference
- - Providers
+ - Providers
- Getting Started
- Reference
- Advanced features
diff --git a/docs/index.md b/docs/index.md
index 922a43d14..a0fa9773f 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -32,7 +32,7 @@ title: DNSControl
Use macros and variables for easier updates.
Upload your zones to
- multiple DNS providers.
+ multiple DNS providers.
@@ -85,7 +85,7 @@ title: DNSControl
Getting Started: A walk-through of the basics
-
- Providers: Which DNS providers are supported
+ Providers: Which DNS providers are supported
-
Examples: The DNSControl language by example
diff --git a/documentation/.gitbook.yaml b/documentation/.gitbook.yaml
new file mode 100644
index 000000000..983e3097d
--- /dev/null
+++ b/documentation/.gitbook.yaml
@@ -0,0 +1,52 @@
+redirects:
+ service-providers/providers: providers.md
+ service-providers/providers/akamaiedgedns: provider/akamaiedgedns.md
+ service-providers/providers/autodns: provider/autodns.md
+ service-providers/providers/axfrddns: provider/axfrddns.md
+ service-providers/providers/azure_dns: provider/azure_dns.md
+ service-providers/providers/azure_private_dns: provider/azure_private_dns.md
+ service-providers/providers/bind: provider/bind.md
+ service-providers/providers/bunny_dns: provider/bunny_dns.md
+ service-providers/providers/cloudflareapi: provider/cloudflareapi.md
+ service-providers/providers/cloudns: provider/cloudns.md
+ service-providers/providers/cscglobal: provider/cscglobal.md
+ service-providers/providers/desec: provider/desec.md
+ service-providers/providers/digitalocean: provider/digitalocean.md
+ service-providers/providers/dnsimple: provider/dnsimple.md
+ service-providers/providers/dnsmadeeasy: provider/dnsmadeeasy.md
+ service-providers/providers/dnsoverhttps: provider/dnsoverhttps.md
+ service-providers/providers/domainnameshop: provider/domainnameshop.md
+ service-providers/providers/dynadot: provider/dynadot.md
+ service-providers/providers/easyname: provider/easyname.md
+ service-providers/providers/exoscale: provider/exoscale.md
+ service-providers/providers/gandi_v5: provider/gandi_v5.md
+ service-providers/providers/gcloud: provider/gcloud.md
+ service-providers/providers/gcore: provider/gcore.md
+ service-providers/providers/hedns: provider/hedns.md
+ service-providers/providers/hetzner: provider/hetzner.md
+ service-providers/providers/hexonet: provider/hexonet.md
+ service-providers/providers/hostingde: provider/hostingde.md
+ service-providers/providers/internetbs: provider/internetbs.md
+ service-providers/providers/inwx: provider/inwx.md
+ service-providers/providers/linode: provider/linode.md
+ service-providers/providers/loopia: provider/loopia.md
+ service-providers/providers/luadns: provider/luadns.md
+ service-providers/providers/msdns: provider/msdns.md
+ service-providers/providers/mythicbeasts: provider/mythicbeasts.md
+ service-providers/providers/namecheap: provider/namecheap.md
+ service-providers/providers/namedotcom: provider/namedotcom.md
+ service-providers/providers/netcup: provider/netcup.md
+ service-providers/providers/netlify: provider/netlify.md
+ service-providers/providers/ns1: provider/ns1.md
+ service-providers/providers/opensrs: provider/opensrs.md
+ service-providers/providers/oracle: provider/oracle.md
+ service-providers/providers/ovh: provider/ovh.md
+ service-providers/providers/packetframe: provider/packetframe.md
+ service-providers/providers/porkbun: provider/porkbun.md
+ service-providers/providers/powerdns: provider/powerdns.md
+ service-providers/providers/realtimeregister: provider/realtimeregister.md
+ service-providers/providers/route53: provider/route53.md
+ service-providers/providers/rwth: provider/rwth.md
+ service-providers/providers/softlayer: provider/softlayer.md
+ service-providers/providers/transip: provider/transip.md
+ service-providers/providers/vultr: provider/vultr.md
diff --git a/documentation/SUMMARY.md b/documentation/SUMMARY.md
index 5c704ded3..2e2eec426 100644
--- a/documentation/SUMMARY.md
+++ b/documentation/SUMMARY.md
@@ -8,6 +8,7 @@
* [Examples](examples.md)
* [Migrating zones to DNSControl](migrating.md)
* [TypeScript autocomplete and type checking](typescript.md)
+* [Providers](providers.md)
## Language Reference
@@ -94,59 +95,58 @@
* [R53_EVALUATE_TARGET_HEALTH](language-reference/record-modifiers/R53\_EVALUATE\_TARGET\_HEALTH.md)
* [Why CNAME/MX/NS targets require a "dot"](why-the-dot.md)
-## Service Providers
+## Provider
-* [Providers](providers.md)
- * [Akamai Edge DNS](providers/akamaiedgedns.md)
- * [Amazon Route 53](providers/route53.md)
- * [AutoDNS](providers/autodns.md)
- * [AXFR+DDNS](providers/axfrddns.md)
- * [Azure DNS](providers/azure_dns.md)
- * [Azure Private DNS](providers/azure_private_dns.md)
- * [BIND](providers/bind.md)
- * [Bunny DNS](providers/bunny\_dns.md)
- * [Cloudflare](providers/cloudflareapi.md)
- * [ClouDNS](providers/cloudns.md)
- * [CSC Global](providers/cscglobal.md)
- * [deSEC](providers/desec.md)
- * [DigitalOcean](providers/digitalocean.md)
- * [DNS Made Easy](providers/dnsmadeeasy.md)
- * [DNSimple](providers/dnsimple.md)
- * [DNS-over-HTTPS](providers/dnsoverhttps.md)
- * [DOMAINNAMESHOP](providers/domainnameshop.md)
- * [Dynadot](providers/dynadot.md)
- * [easyname](providers/easyname.md)
- * [Exoscale](providers/exoscale.md)
- * [Gandi_v5](providers/gandi_v5.md)
- * [Gcore](providers/gcore.md)
- * [Google Cloud DNS](providers/gcloud.md)
- * [Hetzner DNS Console](providers/hetzner.md)
- * [HEXONET](providers/hexonet.md)
- * [hosting.de](providers/hostingde.md)
- * [Hurricane Electric DNS](providers/hedns.md)
- * [Internet.bs](providers/internetbs.md)
- * [INWX](providers/inwx.md)
- * [Linode](providers/linode.md)
- * [Loopia](providers/loopia.md)
- * [LuaDNS](providers/luadns.md)
- * [Microsoft DNS Server on Microsoft Windows Server](providers/msdns.md)
- * [Mythic Beasts](providers/mythicbeasts.md)
- * [Namecheap](providers/namecheap.md)
- * [Name.com](providers/namedotcom.md)
- * [Netcup](providers/netcup.md)
- * [Netlify](providers/netlify.md)
- * [NS1](providers/ns1.md)
- * [OpenSRS](providers/opensrs.md)
- * [Oracle Cloud](providers/oracle.md)
- * [OVH](providers/ovh.md)
- * [Packetframe](providers/packetframe.md)
- * [Porkbun](providers/porkbun.md)
- * [PowerDNS](providers/powerdns.md)
- * [Realtime Register](providers/realtimeregister.md)
- * [RWTH DNS-Admin](providers/rwth.md)
- * [SoftLayer DNS](providers/softlayer.md)
- * [TransIP](providers/transip.md)
- * [Vultr](providers/vultr.md)
+* [Akamai Edge DNS](provider/akamaiedgedns.md)
+* [Amazon Route 53](provider/route53.md)
+* [AutoDNS](provider/autodns.md)
+* [AXFR+DDNS](provider/axfrddns.md)
+* [Azure DNS](provider/azure_dns.md)
+* [Azure Private DNS](provider/azure_private_dns.md)
+* [BIND](provider/bind.md)
+* [Bunny DNS](provider/bunny\_dns.md)
+* [Cloudflare](provider/cloudflareapi.md)
+* [ClouDNS](provider/cloudns.md)
+* [CSC Global](provider/cscglobal.md)
+* [deSEC](provider/desec.md)
+* [DigitalOcean](provider/digitalocean.md)
+* [DNS Made Easy](provider/dnsmadeeasy.md)
+* [DNSimple](provider/dnsimple.md)
+* [DNS-over-HTTPS](provider/dnsoverhttps.md)
+* [DOMAINNAMESHOP](provider/domainnameshop.md)
+* [Dynadot](provider/dynadot.md)
+* [easyname](provider/easyname.md)
+* [Exoscale](provider/exoscale.md)
+* [Gandi_v5](provider/gandi_v5.md)
+* [Gcore](provider/gcore.md)
+* [Google Cloud DNS](provider/gcloud.md)
+* [Hetzner DNS Console](provider/hetzner.md)
+* [HEXONET](provider/hexonet.md)
+* [hosting.de](provider/hostingde.md)
+* [Hurricane Electric DNS](provider/hedns.md)
+* [Internet.bs](provider/internetbs.md)
+* [INWX](provider/inwx.md)
+* [Linode](provider/linode.md)
+* [Loopia](provider/loopia.md)
+* [LuaDNS](provider/luadns.md)
+* [Microsoft DNS Server on Microsoft Windows Server](provider/msdns.md)
+* [Mythic Beasts](provider/mythicbeasts.md)
+* [Namecheap](provider/namecheap.md)
+* [Name.com](provider/namedotcom.md)
+* [Netcup](provider/netcup.md)
+* [Netlify](provider/netlify.md)
+* [NS1](provider/ns1.md)
+* [OpenSRS](provider/opensrs.md)
+* [Oracle Cloud](provider/oracle.md)
+* [OVH](provider/ovh.md)
+* [Packetframe](provider/packetframe.md)
+* [Porkbun](provider/porkbun.md)
+* [PowerDNS](provider/powerdns.md)
+* [Realtime Register](provider/realtimeregister.md)
+* [RWTH DNS-Admin](provider/rwth.md)
+* [SoftLayer DNS](provider/softlayer.md)
+* [TransIP](provider/transip.md)
+* [Vultr](provider/vultr.md)
## Commands
diff --git a/documentation/adding-new-rtypes.md b/documentation/adding-new-rtypes.md
index b3677eb7d..943aaa32a 100644
--- a/documentation/adding-new-rtypes.md
+++ b/documentation/adding-new-rtypes.md
@@ -60,14 +60,14 @@ a minimum.
- Run stringer to auto-update the file `dnscontrol/providers/capability_string.go`
```shell
-pushd; cd providers/;
+pushd; cd provider/;
stringer -type=Capability
popd
```
alternatively
```shell
-pushd; cd providers/;
+pushd; cd provider/;
go generate
popd
```
diff --git a/documentation/bug-triage.md b/documentation/bug-triage.md
index 4eae829cc..35102dd0d 100644
--- a/documentation/bug-triage.md
+++ b/documentation/bug-triage.md
@@ -39,7 +39,7 @@ Message to requester:
Thank you for requesting this provider!
I've tagged this issue as a provider-request. It will (soon) be listed as a "requested provider" on the provider list web page:
-https://docs.dnscontrol.org/service-providers/providers
+https://docs.dnscontrol.org/provider
I will now close the issue. I know that's a bit confusing, but it will remain on the "requested provider" list.
diff --git a/documentation/get-zones.md b/documentation/get-zones.md
index 223cd1029..45fc3f74c 100644
--- a/documentation/get-zones.md
+++ b/documentation/get-zones.md
@@ -192,4 +192,4 @@ provider.)
Implementing the `ListZones` function also activates the `check-creds`
subcommand for that provider. Please add to the provider documentation
a list of error messages that people might see if the credentials are
-invalid. See `documentation/providers/gcloud.md` for examples.
+invalid. See `documentation/provider/gcloud.md` for examples.
diff --git a/documentation/getting-started.md b/documentation/getting-started.md
index 49df0f5b2..8cabc7681 100644
--- a/documentation/getting-started.md
+++ b/documentation/getting-started.md
@@ -298,7 +298,7 @@ $TTL 300
```
You can change the "DEFAULT_NOT_SET" text by following the documentation
-for the [BIND provider](providers/bind.md) to set
+for the [BIND provider](provider/bind.md) to set
the "master" and "mbox" settings. Try that now.
diff --git a/documentation/index.md b/documentation/index.md
index 44b773ba9..34bc897d3 100644
--- a/documentation/index.md
+++ b/documentation/index.md
@@ -15,7 +15,7 @@ Take advantage of the advanced features. Use macros and variables for easier upd
* Super extensible! Plug-in architecture makes adding new DNS providers and Registrars easy!
* Eliminate vendor lock-in. Switch DNS providers easily, any time, with full fidelity.
* Reduce points of failure: Easily maintain dual DNS providers and easily drop one that is down.
-* Supports 35+ [DNS Providers](providers.md) including [BIND](providers/bind.md), [AWS Route 53](providers/route53.md), [Google DNS](providers/gcloud.md), and [name.com](providers/namedotcom.md).
+* Supports 35+ [DNS Providers](providers.md) including [BIND](provider/bind.md), [AWS Route 53](provider/route53.md), [Google DNS](provider/gcloud.md), and [name.com](provider/namedotcom.md).
* [Apply CI/CD principles](ci-cd-gitlab.md) to DNS: Unit-tests, system-tests, automated deployment.
* All the benefits of Git (or any VCS) for your DNS zone data. View history. Accept PRs.
* Optimize DNS with [SPF optimizer](language-reference/domain-modifiers/SPF_BUILDER.md). Detect too many lookups. Flatten includes.
diff --git a/documentation/language-reference/domain-modifiers/SOA.md b/documentation/language-reference/domain-modifiers/SOA.md
index e14f1b4e0..649bbdf32 100644
--- a/documentation/language-reference/domain-modifiers/SOA.md
+++ b/documentation/language-reference/domain-modifiers/SOA.md
@@ -39,4 +39,4 @@ when you are making it easier for spammers how to find you.
* Most providers automatically generate SOA records. They will ignore any `SOA()` statements.
* The mbox field should not be set to a real email address unless you love spam and hate your privacy.
-There is more info about `SOA` in the documentation for the [BIND provider](../../providers/bind.md).
+There is more info about `SOA` in the documentation for the [BIND provider](../../provider/bind.md).
diff --git a/documentation/language-reference/record-modifiers/R53_ZONE.md b/documentation/language-reference/record-modifiers/R53_ZONE.md
index a15387df5..482783913 100644
--- a/documentation/language-reference/record-modifiers/R53_ZONE.md
+++ b/documentation/language-reference/record-modifiers/R53_ZONE.md
@@ -10,6 +10,6 @@ provider: ROUTE53
`R53_ZONE` lets you specify the AWS Zone ID for an entire domain ([`D()`](../top-level-functions/D.md)) or a specific [`R53_ALIAS()`](../domain-modifiers/R53_ALIAS.md) record.
-When used with [`D()`](../top-level-functions/D.md), it sets the zone id of the domain. This can be used to differentiate between split horizon domains in public and private zones. See this [example](../../providers/route53.md#split-horizon) in the [Amazon Route 53 provider page](../../providers/route53.md).
+When used with [`D()`](../top-level-functions/D.md), it sets the zone id of the domain. This can be used to differentiate between split horizon domains in public and private zones. See this [example](../../provider/route53.md#split-horizon) in the [Amazon Route 53 provider page](../../provider/route53.md).
When used with [`R53_ALIAS()`](../domain-modifiers/R53_ALIAS.md) it sets the required Route53 hosted zone id in a R53_ALIAS record. See [`R53_ALIAS()`](../domain-modifiers/R53_ALIAS.md) documentation for details.
diff --git a/documentation/nameservers.md b/documentation/nameservers.md
index cd56c6e9e..3b58c9f34 100644
--- a/documentation/nameservers.md
+++ b/documentation/nameservers.md
@@ -248,7 +248,7 @@ a notified if the delegation diverges.
Why?
Sometimes you just want to know if something changes!
-See the [DNS-over-HTTPS Provider](providers/dnsoverhttps.md) documentation for more info.
+See the [DNS-over-HTTPS Provider](provider/dnsoverhttps.md) documentation for more info.
{% code title="dnsconfig.js" %}
```javascript
diff --git a/documentation/providers/akamaiedgedns.md b/documentation/provider/akamaiedgedns.md
similarity index 100%
rename from documentation/providers/akamaiedgedns.md
rename to documentation/provider/akamaiedgedns.md
diff --git a/documentation/providers/autodns.md b/documentation/provider/autodns.md
similarity index 100%
rename from documentation/providers/autodns.md
rename to documentation/provider/autodns.md
diff --git a/documentation/providers/axfrddns.md b/documentation/provider/axfrddns.md
similarity index 100%
rename from documentation/providers/axfrddns.md
rename to documentation/provider/axfrddns.md
diff --git a/documentation/providers/azure_dns.md b/documentation/provider/azure_dns.md
similarity index 100%
rename from documentation/providers/azure_dns.md
rename to documentation/provider/azure_dns.md
diff --git a/documentation/providers/azure_private_dns.md b/documentation/provider/azure_private_dns.md
similarity index 100%
rename from documentation/providers/azure_private_dns.md
rename to documentation/provider/azure_private_dns.md
diff --git a/documentation/providers/bind.md b/documentation/provider/bind.md
similarity index 100%
rename from documentation/providers/bind.md
rename to documentation/provider/bind.md
diff --git a/documentation/providers/bunny_dns.md b/documentation/provider/bunny_dns.md
similarity index 100%
rename from documentation/providers/bunny_dns.md
rename to documentation/provider/bunny_dns.md
diff --git a/documentation/providers/cloudflareapi.md b/documentation/provider/cloudflareapi.md
similarity index 100%
rename from documentation/providers/cloudflareapi.md
rename to documentation/provider/cloudflareapi.md
diff --git a/documentation/providers/cloudns.md b/documentation/provider/cloudns.md
similarity index 100%
rename from documentation/providers/cloudns.md
rename to documentation/provider/cloudns.md
diff --git a/documentation/providers/cscglobal.md b/documentation/provider/cscglobal.md
similarity index 100%
rename from documentation/providers/cscglobal.md
rename to documentation/provider/cscglobal.md
diff --git a/documentation/providers/desec.md b/documentation/provider/desec.md
similarity index 100%
rename from documentation/providers/desec.md
rename to documentation/provider/desec.md
diff --git a/documentation/providers/digitalocean.md b/documentation/provider/digitalocean.md
similarity index 100%
rename from documentation/providers/digitalocean.md
rename to documentation/provider/digitalocean.md
diff --git a/documentation/providers/dnsimple.md b/documentation/provider/dnsimple.md
similarity index 100%
rename from documentation/providers/dnsimple.md
rename to documentation/provider/dnsimple.md
diff --git a/documentation/providers/dnsmadeeasy.md b/documentation/provider/dnsmadeeasy.md
similarity index 100%
rename from documentation/providers/dnsmadeeasy.md
rename to documentation/provider/dnsmadeeasy.md
diff --git a/documentation/providers/dnsoverhttps.md b/documentation/provider/dnsoverhttps.md
similarity index 100%
rename from documentation/providers/dnsoverhttps.md
rename to documentation/provider/dnsoverhttps.md
diff --git a/documentation/providers/domainnameshop.md b/documentation/provider/domainnameshop.md
similarity index 100%
rename from documentation/providers/domainnameshop.md
rename to documentation/provider/domainnameshop.md
diff --git a/documentation/providers/dynadot.md b/documentation/provider/dynadot.md
similarity index 100%
rename from documentation/providers/dynadot.md
rename to documentation/provider/dynadot.md
diff --git a/documentation/providers/easyname.md b/documentation/provider/easyname.md
similarity index 100%
rename from documentation/providers/easyname.md
rename to documentation/provider/easyname.md
diff --git a/documentation/providers/exoscale.md b/documentation/provider/exoscale.md
similarity index 100%
rename from documentation/providers/exoscale.md
rename to documentation/provider/exoscale.md
diff --git a/documentation/providers/gandi_v5.md b/documentation/provider/gandi_v5.md
similarity index 100%
rename from documentation/providers/gandi_v5.md
rename to documentation/provider/gandi_v5.md
diff --git a/documentation/providers/gcloud.md b/documentation/provider/gcloud.md
similarity index 100%
rename from documentation/providers/gcloud.md
rename to documentation/provider/gcloud.md
diff --git a/documentation/providers/gcore.md b/documentation/provider/gcore.md
similarity index 100%
rename from documentation/providers/gcore.md
rename to documentation/provider/gcore.md
diff --git a/documentation/providers/hedns.md b/documentation/provider/hedns.md
similarity index 100%
rename from documentation/providers/hedns.md
rename to documentation/provider/hedns.md
diff --git a/documentation/providers/hetzner.md b/documentation/provider/hetzner.md
similarity index 100%
rename from documentation/providers/hetzner.md
rename to documentation/provider/hetzner.md
diff --git a/documentation/providers/hexonet.md b/documentation/provider/hexonet.md
similarity index 100%
rename from documentation/providers/hexonet.md
rename to documentation/provider/hexonet.md
diff --git a/documentation/providers/hostingde.md b/documentation/provider/hostingde.md
similarity index 100%
rename from documentation/providers/hostingde.md
rename to documentation/provider/hostingde.md
diff --git a/documentation/providers/internetbs.md b/documentation/provider/internetbs.md
similarity index 100%
rename from documentation/providers/internetbs.md
rename to documentation/provider/internetbs.md
diff --git a/documentation/providers/inwx.md b/documentation/provider/inwx.md
similarity index 100%
rename from documentation/providers/inwx.md
rename to documentation/provider/inwx.md
diff --git a/documentation/providers/linode.md b/documentation/provider/linode.md
similarity index 100%
rename from documentation/providers/linode.md
rename to documentation/provider/linode.md
diff --git a/documentation/providers/loopia.md b/documentation/provider/loopia.md
similarity index 100%
rename from documentation/providers/loopia.md
rename to documentation/provider/loopia.md
diff --git a/documentation/providers/luadns.md b/documentation/provider/luadns.md
similarity index 100%
rename from documentation/providers/luadns.md
rename to documentation/provider/luadns.md
diff --git a/documentation/providers/msdns.md b/documentation/provider/msdns.md
similarity index 100%
rename from documentation/providers/msdns.md
rename to documentation/provider/msdns.md
diff --git a/documentation/providers/mythicbeasts.md b/documentation/provider/mythicbeasts.md
similarity index 100%
rename from documentation/providers/mythicbeasts.md
rename to documentation/provider/mythicbeasts.md
diff --git a/documentation/providers/namecheap.md b/documentation/provider/namecheap.md
similarity index 100%
rename from documentation/providers/namecheap.md
rename to documentation/provider/namecheap.md
diff --git a/documentation/providers/namedotcom.md b/documentation/provider/namedotcom.md
similarity index 100%
rename from documentation/providers/namedotcom.md
rename to documentation/provider/namedotcom.md
diff --git a/documentation/providers/netcup.md b/documentation/provider/netcup.md
similarity index 100%
rename from documentation/providers/netcup.md
rename to documentation/provider/netcup.md
diff --git a/documentation/providers/netlify.md b/documentation/provider/netlify.md
similarity index 100%
rename from documentation/providers/netlify.md
rename to documentation/provider/netlify.md
diff --git a/documentation/providers/ns1.md b/documentation/provider/ns1.md
similarity index 100%
rename from documentation/providers/ns1.md
rename to documentation/provider/ns1.md
diff --git a/documentation/providers/opensrs.md b/documentation/provider/opensrs.md
similarity index 100%
rename from documentation/providers/opensrs.md
rename to documentation/provider/opensrs.md
diff --git a/documentation/providers/oracle.md b/documentation/provider/oracle.md
similarity index 100%
rename from documentation/providers/oracle.md
rename to documentation/provider/oracle.md
diff --git a/documentation/providers/ovh.md b/documentation/provider/ovh.md
similarity index 100%
rename from documentation/providers/ovh.md
rename to documentation/provider/ovh.md
diff --git a/documentation/providers/packetframe.md b/documentation/provider/packetframe.md
similarity index 100%
rename from documentation/providers/packetframe.md
rename to documentation/provider/packetframe.md
diff --git a/documentation/providers/porkbun.md b/documentation/provider/porkbun.md
similarity index 100%
rename from documentation/providers/porkbun.md
rename to documentation/provider/porkbun.md
diff --git a/documentation/providers/powerdns.md b/documentation/provider/powerdns.md
similarity index 100%
rename from documentation/providers/powerdns.md
rename to documentation/provider/powerdns.md
diff --git a/documentation/providers/realtimeregister.md b/documentation/provider/realtimeregister.md
similarity index 100%
rename from documentation/providers/realtimeregister.md
rename to documentation/provider/realtimeregister.md
diff --git a/documentation/providers/route53.md b/documentation/provider/route53.md
similarity index 100%
rename from documentation/providers/route53.md
rename to documentation/provider/route53.md
diff --git a/documentation/providers/rwth.md b/documentation/provider/rwth.md
similarity index 100%
rename from documentation/providers/rwth.md
rename to documentation/provider/rwth.md
diff --git a/documentation/providers/softlayer.md b/documentation/provider/softlayer.md
similarity index 100%
rename from documentation/providers/softlayer.md
rename to documentation/provider/softlayer.md
diff --git a/documentation/providers/transip.md b/documentation/provider/transip.md
similarity index 100%
rename from documentation/providers/transip.md
rename to documentation/provider/transip.md
diff --git a/documentation/providers/vultr.md b/documentation/provider/vultr.md
similarity index 100%
rename from documentation/providers/vultr.md
rename to documentation/provider/vultr.md
diff --git a/documentation/providers.md b/documentation/providers.md
index d91fe0e37..bbaff36d6 100644
--- a/documentation/providers.md
+++ b/documentation/providers.md
@@ -14,56 +14,56 @@ If a feature is definitively not supported for whatever reason, we would also li
| Provider name | Official Support | DNS Provider | Registrar | Concurrency Verified | [`ALIAS`](language-reference/domain-modifiers/ALIAS.md) | [`CAA`](language-reference/domain-modifiers/CAA.md) | [`AUTODNSSEC`](language-reference/domain-modifiers/AUTODNSSEC_ON.md) | [`LOC`](language-reference/domain-modifiers/LOC.md) | [`NAPTR`](language-reference/domain-modifiers/NAPTR.md) | [`PTR`](language-reference/domain-modifiers/PTR.md) | [`SOA`](language-reference/domain-modifiers/SOA.md) | [`SRV`](language-reference/domain-modifiers/SRV.md) | [`SSHFP`](language-reference/domain-modifiers/SSHFP.md) | [`TLSA`](language-reference/domain-modifiers/TLSA.md) | [`DS`](language-reference/domain-modifiers/DS.md) | [`DHCID`](language-reference/domain-modifiers/DHCID.md) | [`DNAME`](language-reference/domain-modifiers/DNAME.md) | dual host | create-domains | get-zones |
| ------------- | ---------------- | ------------ | --------- | -------------------- | ------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | --------- | -------------- | --------- |
-| [`AKAMAIEDGEDNS`](providers/akamaiedgedns.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`AUTODNS`](providers/autodns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❔ | ❔ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❔ | ❔ | ❌ | ❌ | ✅ |
-| [`AXFRDDNS`](providers/axfrddns.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ❔ | ❌ | ❌ | ❌ |
-| [`AZURE_DNS`](providers/azure_dns.md) | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❔ | ❌ | ❌ | ✅ | ❔ | ✅ | ❌ | ❌ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`AZURE_PRIVATE_DNS`](providers/azure_private_dns.md) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❔ | ❌ | ❌ | ✅ | ❔ | ✅ | ❌ | ❌ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`BIND`](providers/bind.md) | ✅ | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| [`BUNNY_DNS`](providers/bunny_dns.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❔ | ❌ | ✅ | ✅ |
-| [`CLOUDFLAREAPI`](providers/cloudflareapi.md) | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❔ | ❌ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ❌ | ✅ | ✅ |
-| [`CLOUDNS`](providers/cloudns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ✅ | ❔ | ✅ | ✅ |
-| [`CSCGLOBAL`](providers/cscglobal.md) | ✅ | ✅ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ |
-| [`DESEC`](providers/desec.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ |
-| [`DIGITALOCEAN`](providers/digitalocean.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❔ | ❌ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ✅ |
-| [`DNSIMPLE`](providers/dnsimple.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ✅ | ✅ | ❌ | ❌ | ❔ | ❔ | ❌ | ❌ | ✅ |
-| [`DNSMADEEASY`](providers/dnsmadeeasy.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ❌ | ❌ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`DNSOVERHTTPS`](providers/dnsoverhttps.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
-| [`DOMAINNAMESHOP`](providers/domainnameshop.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ |
-| [`DYNADOT`](providers/dynadot.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
-| [`EASYNAME`](providers/easyname.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
-| [`EXOSCALE`](providers/exoscale.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ❔ | ❌ | ❔ | ❔ | ❔ | ❌ | ❌ | ❔ |
-| [`GANDI_V5`](providers/gandi_v5.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ❔ | ❌ | ✅ |
-| [`GCLOUD`](providers/gcloud.md) | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`GCORE`](providers/gcore.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ✅ | ❌ | ❌ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`HEDNS`](providers/hedns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`HETZNER`](providers/hetzner.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`HEXONET`](providers/hexonet.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ✅ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ❔ |
-| [`HOSTINGDE`](providers/hostingde.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`INTERNETBS`](providers/internetbs.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
-| [`INWX`](providers/inwx.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`LINODE`](providers/linode.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❔ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ |
-| [`LOOPIA`](providers/loopia.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ✅ |
-| [`LUADNS`](providers/luadns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`MSDNS`](providers/msdns.md) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❔ | ❌ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ |
-| [`MYTHICBEASTS`](providers/mythicbeasts.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ❌ | ✅ |
-| [`NAMECHEAP`](providers/namecheap.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ❌ | ❔ | ❌ | ❔ | ❌ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ |
-| [`NAMEDOTCOM`](providers/namedotcom.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ❔ | ❔ | ❌ | ❔ | ❌ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ❌ | ✅ |
-| [`NETCUP`](providers/netcup.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❔ | ❌ | ❔ | ❌ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ❌ |
-| [`NETLIFY`](providers/netlify.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❔ | ❔ | ❌ | ❌ | ✅ |
-| [`NS1`](providers/ns1.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`OPENSRS`](providers/opensrs.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
-| [`ORACLE`](providers/oracle.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`OVH`](providers/ovh.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❌ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ❌ | ✅ |
-| [`PACKETFRAME`](providers/packetframe.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ❔ |
-| [`PORKBUN`](providers/porkbun.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ❔ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❔ | ❔ | ❌ | ❌ | ✅ |
-| [`POWERDNS`](providers/powerdns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ |
-| [`REALTIMEREGISTER`](providers/realtimeregister.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❔ | ❌ | ✅ | ✅ |
-| [`ROUTE53`](providers/route53.md) | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
-| [`RWTH`](providers/rwth.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❔ | ❌ | ❌ | ✅ | ❔ | ✅ | ✅ | ❌ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ |
-| [`SOFTLAYER`](providers/softlayer.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ❔ | ❔ | ❌ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
-| [`TRANSIP`](providers/transip.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ❔ | ❌ | ✅ |
-| [`VULTR`](providers/vultr.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❔ | ❌ | ❔ | ❌ | ❔ | ✅ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ✅ | ✅ |
+| [`AKAMAIEDGEDNS`](provider/akamaiedgedns.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`AUTODNS`](provider/autodns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❔ | ❔ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❔ | ❔ | ❌ | ❌ | ✅ |
+| [`AXFRDDNS`](provider/axfrddns.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ❔ | ❌ | ❌ | ❌ |
+| [`AZURE_DNS`](provider/azure_dns.md) | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❔ | ❌ | ❌ | ✅ | ❔ | ✅ | ❌ | ❌ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`AZURE_PRIVATE_DNS`](provider/azure_private_dns.md) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❔ | ❌ | ❌ | ✅ | ❔ | ✅ | ❌ | ❌ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`BIND`](provider/bind.md) | ✅ | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| [`BUNNY_DNS`](provider/bunny_dns.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❔ | ❌ | ✅ | ✅ |
+| [`CLOUDFLAREAPI`](provider/cloudflareapi.md) | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❔ | ❌ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ❌ | ✅ | ✅ |
+| [`CLOUDNS`](provider/cloudns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ✅ | ❔ | ✅ | ✅ |
+| [`CSCGLOBAL`](provider/cscglobal.md) | ✅ | ✅ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ |
+| [`DESEC`](provider/desec.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ |
+| [`DIGITALOCEAN`](provider/digitalocean.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❔ | ❌ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ✅ |
+| [`DNSIMPLE`](provider/dnsimple.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ✅ | ✅ | ❌ | ❌ | ❔ | ❔ | ❌ | ❌ | ✅ |
+| [`DNSMADEEASY`](provider/dnsmadeeasy.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ❌ | ❌ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`DNSOVERHTTPS`](provider/dnsoverhttps.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
+| [`DOMAINNAMESHOP`](provider/domainnameshop.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ |
+| [`DYNADOT`](provider/dynadot.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
+| [`EASYNAME`](provider/easyname.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
+| [`EXOSCALE`](provider/exoscale.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ❔ | ❌ | ❔ | ❔ | ❔ | ❌ | ❌ | ❔ |
+| [`GANDI_V5`](provider/gandi_v5.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ❔ | ❌ | ✅ |
+| [`GCLOUD`](provider/gcloud.md) | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`GCORE`](provider/gcore.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ✅ | ❌ | ❌ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`HEDNS`](provider/hedns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`HETZNER`](provider/hetzner.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`HEXONET`](provider/hexonet.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ✅ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ❔ |
+| [`HOSTINGDE`](provider/hostingde.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`INTERNETBS`](provider/internetbs.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
+| [`INWX`](provider/inwx.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`LINODE`](provider/linode.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❔ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ |
+| [`LOOPIA`](provider/loopia.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ✅ |
+| [`LUADNS`](provider/luadns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`MSDNS`](provider/msdns.md) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❔ | ❌ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ |
+| [`MYTHICBEASTS`](provider/mythicbeasts.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ❌ | ✅ |
+| [`NAMECHEAP`](provider/namecheap.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ❌ | ❔ | ❌ | ❔ | ❌ | ❔ | ❌ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ |
+| [`NAMEDOTCOM`](provider/namedotcom.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ❔ | ❔ | ❌ | ❔ | ❌ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ❌ | ✅ |
+| [`NETCUP`](provider/netcup.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❔ | ❌ | ❔ | ❌ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ❌ |
+| [`NETLIFY`](provider/netlify.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❔ | ❔ | ❌ | ❌ | ✅ |
+| [`NS1`](provider/ns1.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`OPENSRS`](provider/opensrs.md) | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
+| [`ORACLE`](provider/oracle.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`OVH`](provider/ovh.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❌ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ❔ | ✅ | ❌ | ✅ |
+| [`PACKETFRAME`](provider/packetframe.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ❔ |
+| [`PORKBUN`](provider/porkbun.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ❔ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❔ | ❔ | ❌ | ❌ | ✅ |
+| [`POWERDNS`](provider/powerdns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ |
+| [`REALTIMEREGISTER`](provider/realtimeregister.md) | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❔ | ❌ | ✅ | ✅ |
+| [`ROUTE53`](provider/route53.md) | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❔ | ❌ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ |
+| [`RWTH`](provider/rwth.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❔ | ❌ | ❌ | ✅ | ❔ | ✅ | ✅ | ❌ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ |
+| [`SOFTLAYER`](provider/softlayer.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ❔ | ❔ | ❌ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❔ |
+| [`TRANSIP`](provider/transip.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❔ | ❔ | ❌ | ✅ |
+| [`VULTR`](provider/vultr.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❔ | ❌ | ❔ | ❌ | ❔ | ✅ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ✅ | ✅ |
### Providers with "official support"
@@ -79,13 +79,13 @@ Providers in this category and their maintainers are:
|Name|Maintainer|
|---|---|
-|[`AZURE_DNS`](providers/azure_dns.md)|@vatsalyagoel|
-|[`BIND`](providers/bind.md)|@tlimoncelli|
-|[`CLOUDFLAREAPI`](providers/cloudflareapi.md)|@tresni|
-|[`CSCGLOBAL`](providers/cscglobal.md)|@mikenz|
-|[`GCLOUD`](providers/gcloud.md)|@riyadhalnur|
-|[`MSDNS`](providers/msdns.md)|@tlimoncelli|
-|[`ROUTE53`](providers/route53.md)|@tresni|
+|[`AZURE_DNS`](provider/azure_dns.md)|@vatsalyagoel|
+|[`BIND`](provider/bind.md)|@tlimoncelli|
+|[`CLOUDFLAREAPI`](provider/cloudflareapi.md)|@tresni|
+|[`CSCGLOBAL`](provider/cscglobal.md)|@mikenz|
+|[`GCLOUD`](provider/gcloud.md)|@riyadhalnur|
+|[`MSDNS`](provider/msdns.md)|@tlimoncelli|
+|[`ROUTE53`](provider/route53.md)|@tresni|
### Providers with "contributor support"
@@ -109,47 +109,47 @@ Providers in this category and their maintainers are:
|Name|Maintainer|
|---|---|
-|[`AZURE_PRIVATE_DNS`](providers/azure_private_dns.md)|@matthewmgamble|
-|[`AKAMAIEDGEDNS`](providers/akamaiedgedns.md)|@svernick|
-|[`AXFRDDNS`](providers/axfrddns.md)|@hnrgrgr|
-|[`BUNNY_DNS`](providers/bunny_dns.md)|@ppmathis|
-|[`CLOUDFLAREAPI`](providers/cloudflareapi.md)|@tresni|
-|[`CLOUDNS`](providers/cloudns.md)|@pragmaton|
-|[`CSCGLOBAL`](providers/cscglobal.md)|@Air-New-Zealand|
-|[`DESEC`](providers/desec.md)|@D3luxee|
-|[`DIGITALOCEAN`](providers/digitalocean.md)|@Deraen|
-|[`DNSIMPLE`](providers/dnsimple.md)|@onlyhavecans|
-|[`DNSMADEEASY`](providers/dnsmadeeasy.md)|@vojtad|
-|[`DNSOVERHTTPS`](providers/dnsoverhttps.md)|@mikenz|
-|[`DOMAINNAMESHOP`](providers/domainnameshop.md)|@SimenBai|
-|[`EASYNAME`](providers/easyname.md)|@tresni|
-|[`EXOSCALE`](providers/exoscale.md)|@pierre-emmanuelJ|
-|[`GANDI_V5`](providers/gandi_v5.md)|@TomOnTime|
-|[`GCORE`](providers/gcore.md)|@xddxdd|
-|[`HEDNS`](providers/hedns.md)|@rblenkinsopp|
-|[`HETZNER`](providers/hetzner.md)|@das7pad|
-|[`HEXONET`](providers/hexonet.md)|@KaiSchwarz-cnic|
-|[`HOSTINGDE`](providers/hostingde.md)|@membero|
-|[`INTERNETBS`](providers/internetbs.md)|@pragmaton|
-|[`INWX`](providers/inwx.md)|@patschi|
-|[`LINODE`](providers/linode.md)|@koesie10|
-|[`LOOPIA`](providers/loopia.md)|@systemcrash|
-|[`LUADNS`](providers/luadns.md)|@riku22|
-|[`NAMECHEAP`](providers/namecheap.md)|@willpower232|
-|[`NETCUP`](providers/netcup.md)|@kordianbruck|
-|[`NETLIFY`](providers/netlify.md)|@SphericalKat|
-|[`NS1`](providers/ns1.md)|@costasd|
-|[`OPENSRS`](providers/opensrs.md)|@philhug|
-|[`ORACLE`](providers/oracle.md)|@kallsyms|
-|[`OVH`](providers/ovh.md)|@masterzen|
-|[`PACKETFRAME`](providers/packetframe.md)|@hamptonmoore|
-|[`POWERDNS`](providers/powerdns.md)|@jpbede|
-|[`REALTIMEREGISTER`](providers/realtimeregister.md)|@PJEilers|
-|[`ROUTE53`](providers/route53.md)|@tresni|
-|[`RWTH`](providers/rwth.md)|@MisterErwin|
-|[`SOFTLAYER`](providers/softlayer.md)|@jamielennox|
-|[`TRANSIP`](providers/transip.md)|@blackshadev|
-|[`VULTR`](providers/vultr.md)|@pgaskin|
+|[`AZURE_PRIVATE_DNS`](provider/azure_private_dns.md)|@matthewmgamble|
+|[`AKAMAIEDGEDNS`](provider/akamaiedgedns.md)|@svernick|
+|[`AXFRDDNS`](provider/axfrddns.md)|@hnrgrgr|
+|[`BUNNY_DNS`](provider/bunny_dns.md)|@ppmathis|
+|[`CLOUDFLAREAPI`](provider/cloudflareapi.md)|@tresni|
+|[`CLOUDNS`](provider/cloudns.md)|@pragmaton|
+|[`CSCGLOBAL`](provider/cscglobal.md)|@Air-New-Zealand|
+|[`DESEC`](provider/desec.md)|@D3luxee|
+|[`DIGITALOCEAN`](provider/digitalocean.md)|@Deraen|
+|[`DNSIMPLE`](provider/dnsimple.md)|@onlyhavecans|
+|[`DNSMADEEASY`](provider/dnsmadeeasy.md)|@vojtad|
+|[`DNSOVERHTTPS`](provider/dnsoverhttps.md)|@mikenz|
+|[`DOMAINNAMESHOP`](provider/domainnameshop.md)|@SimenBai|
+|[`EASYNAME`](provider/easyname.md)|@tresni|
+|[`EXOSCALE`](provider/exoscale.md)|@pierre-emmanuelJ|
+|[`GANDI_V5`](provider/gandi_v5.md)|@TomOnTime|
+|[`GCORE`](provider/gcore.md)|@xddxdd|
+|[`HEDNS`](provider/hedns.md)|@rblenkinsopp|
+|[`HETZNER`](provider/hetzner.md)|@das7pad|
+|[`HEXONET`](provider/hexonet.md)|@KaiSchwarz-cnic|
+|[`HOSTINGDE`](provider/hostingde.md)|@membero|
+|[`INTERNETBS`](provider/internetbs.md)|@pragmaton|
+|[`INWX`](provider/inwx.md)|@patschi|
+|[`LINODE`](provider/linode.md)|@koesie10|
+|[`LOOPIA`](provider/loopia.md)|@systemcrash|
+|[`LUADNS`](provider/luadns.md)|@riku22|
+|[`NAMECHEAP`](provider/namecheap.md)|@willpower232|
+|[`NETCUP`](provider/netcup.md)|@kordianbruck|
+|[`NETLIFY`](provider/netlify.md)|@SphericalKat|
+|[`NS1`](provider/ns1.md)|@costasd|
+|[`OPENSRS`](provider/opensrs.md)|@philhug|
+|[`ORACLE`](provider/oracle.md)|@kallsyms|
+|[`OVH`](provider/ovh.md)|@masterzen|
+|[`PACKETFRAME`](provider/packetframe.md)|@hamptonmoore|
+|[`POWERDNS`](provider/powerdns.md)|@jpbede|
+|[`REALTIMEREGISTER`](provider/realtimeregister.md)|@PJEilers|
+|[`ROUTE53`](provider/route53.md)|@tresni|
+|[`RWTH`](provider/rwth.md)|@MisterErwin|
+|[`SOFTLAYER`](provider/softlayer.md)|@jamielennox|
+|[`TRANSIP`](provider/transip.md)|@blackshadev|
+|[`VULTR`](provider/vultr.md)|@pgaskin|
### Requested providers
diff --git a/documentation/styleguide-doc.md b/documentation/styleguide-doc.md
index 3b523d2e5..49d1ec755 100644
--- a/documentation/styleguide-doc.md
+++ b/documentation/styleguide-doc.md
@@ -22,7 +22,7 @@ TL;DR version: [`docs`](https://github.com/StackExchange/dnscontrol/tree/main/do
Within the git repo, docs are grouped:
* [`documentation/`](https://github.com/StackExchange/dnscontrol/tree/main/documentation): general docs
-* [`documentation/providers/`](https://github.com/StackExchange/dnscontrol/tree/main/documentation/providers/): One file per provider
+* [`documentation/provider/`](https://github.com/StackExchange/dnscontrol/tree/main/documentation/provider/): One file per provider
* [`documentation/language-reference/`](https://github.com/StackExchange/dnscontrol/tree/main/documentation/language-reference/): One file per `dnsconfig.js` language feature
* [`documentation/assets/FOO/`](https://github.com/StackExchange/dnscontrol/tree/main/documentation/assets/): Images for page FOO(PNGs only, please!)
diff --git a/documentation/writing-providers.md b/documentation/writing-providers.md
index 425bf012e..17d81db59 100644
--- a/documentation/writing-providers.md
+++ b/documentation/writing-providers.md
@@ -222,7 +222,7 @@ an automated way to test for this bug. The manual steps are here in
* Add the new provider to the [Providers with "contributor support"](providers.md#providers-with-contributor-support) section.
* Edit `documentation/SUMMARY.md`:
* Add the provider to the "Providers" list.
-* Create `documentation/providers/PROVIDERNAME.md`:
+* Create `documentation/provider/PROVIDERNAME.md`:
* Use one of the other files in that directory as a base.
* Edit `OWNERS`:
* Add the directory name and your GitHub username.
@@ -311,7 +311,7 @@ These are the things we'll be checking when you submit the PR. Please try to co
* `.goreleaser.yml` (Search for `Provider-specific changes`)
* `documentation/SUMMARY.md`
* `documentation/providers.md` (the autogenerated table + the second one; make sure it is removed from the `requested` list)
- * `documentation/providers/`PROVIDERNAME`.md`
+ * `documentation/provider/`PROVIDERNAME`.md`
* `integrationTest/providers.json`
* `providers/_all/all.go`
3. Review the code for style issues, remove debug statements, make sure all exported functions have a comment, and generally tighten up the code.