Skip to content

Commit daf5a7a

Browse files
authored
VERCEL: Implement Vercel DNS Provider (#3379) (#3542)
Fixes #3379 Thanks to @SukkaW for adding this provider! Even though you claimed to be "not familiar with Go at all" the new code looks excellent! Great job!
1 parent 1e67585 commit daf5a7a

File tree

18 files changed

+1193
-2
lines changed

18 files changed

+1193
-2
lines changed

.goreleaser.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ changelog:
3939
regexp: "(?i)^.*(major|new provider|feature)[(\\w)]*:+.*$"
4040
order: 1
4141
- title: 'Provider-specific changes:'
42-
regexp: "(?i)((adguardhome|akamaiedge|autodns|axfrd|azure|azure_private_dns|bind|bunnydns|cloudflare|cloudflareapi_old|cloudns|cnr|cscglobal|desec|digitalocean|dnsimple|dnsmadeeasy|doh|domainnameshop|dynadot|easyname|exoscale|fortigate|gandi|gcloud|gcore|hedns|hetzner|hetznerv2|hexonet|hostingde|huaweicloud|inwx|joker|linode|loopia|luadns|mythicbeasts|namecheap|namedotcom|netcup|netlify|ns1|opensrs|oracle|ovh|packetframe|porkbun|powerdns|realtimeregister|route53|rwth|sakuracloud|softlayer|transip|vultr).*:)+.*"
42+
regexp: "(?i)((adguardhome|akamaiedge|autodns|axfrd|azure|azure_private_dns|bind|bunnydns|cloudflare|cloudflareapi_old|cloudns|cnr|cscglobal|desec|digitalocean|dnsimple|dnsmadeeasy|doh|domainnameshop|dynadot|easyname|exoscale|fortigate|gandi|gcloud|gcore|hedns|hetzner|hetznerv2|hexonet|hostingde|huaweicloud|inwx|joker|linode|loopia|luadns|mythicbeasts|namecheap|namedotcom|netcup|netlify|ns1|opensrs|oracle|ovh|packetframe|porkbun|powerdns|realtimeregister|route53|rwth|sakuracloud|softlayer|transip|vercel|vultr).*:)+.*"
4343
order: 2
4444
- title: 'Documentation:'
4545
regexp: "(?i)^.*(docs)[(\\w)]*:+.*$"

OWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,5 @@ providers/rwth @mistererwin
5353
providers/sakuracloud @ttkzw
5454
# providers/softlayer NEEDS VOLUNTEER
5555
providers/transip @blackshadev
56+
providers/vercel @SukkaW
5657
providers/vultr @pgaskin

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ Currently supported DNS providers:
6565
- Sakura Cloud
6666
- SoftLayer
6767
- TransIP
68+
- Vercel
6869
- Vultr
6970

7071
Currently supported Domain Registrars:

documentation/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
* [Sakura Cloud](provider/sakuracloud.md)
167167
* [SoftLayer DNS](provider/softlayer.md)
168168
* [TransIP](provider/transip.md)
169+
* [Vercel](provider/vercel.md)
169170
* [Vultr](provider/vultr.md)
170171

171172
## Commands
24.7 KB
Loading
27.2 KB
Loading

documentation/provider/index.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ Jump to a table:
8080
| [`SAKURACLOUD`](sakuracloud.md) ||||
8181
| [`SOFTLAYER`](softlayer.md) ||||
8282
| [`TRANSIP`](transip.md) ||||
83+
| [`VERCEL`](vercel.md) ||||
8384
| [`VULTR`](vultr.md) ||||
8485

8586

@@ -141,6 +142,7 @@ Jump to a table:
141142
| [`SAKURACLOUD`](sakuracloud.md) |||||
142143
| [`SOFTLAYER`](softlayer.md) |||||
143144
| [`TRANSIP`](transip.md) |||||
145+
| [`VERCEL`](vercel.md) |||||
144146
| [`VULTR`](vultr.md) |||||
145147

146148

@@ -197,6 +199,7 @@ Jump to a table:
197199
| [`SAKURACLOUD`](sakuracloud.md) ||||||
198200
| [`SOFTLAYER`](softlayer.md) ||||||
199201
| [`TRANSIP`](transip.md) ||||||
202+
| [`VERCEL`](vercel.md) ||||||
200203
| [`VULTR`](vultr.md) ||||||
201204

202205

@@ -251,6 +254,7 @@ Jump to a table:
251254
| [`SAKURACLOUD`](sakuracloud.md) |||||
252255
| [`SOFTLAYER`](softlayer.md) |||||
253256
| [`TRANSIP`](transip.md) |||||
257+
| [`VERCEL`](vercel.md) |||||
254258
| [`VULTR`](vultr.md) |||||
255259

256260

@@ -303,6 +307,7 @@ Jump to a table:
303307
| [`RWTH`](rwth.md) ||||||
304308
| [`SAKURACLOUD`](sakuracloud.md) ||||||
305309
| [`TRANSIP`](transip.md) ||||||
310+
| [`VERCEL`](vercel.md) ||||||
306311
| [`VULTR`](vultr.md) ||||||
307312

308313

@@ -339,6 +344,7 @@ Jump to a table:
339344
| [`REALTIMEREGISTER`](realtimeregister.md) ||||
340345
| [`SAKURACLOUD`](sakuracloud.md) ||||
341346
| [`TRANSIP`](transip.md) ||||
347+
| [`VERCEL`](vercel.md) ||||
342348

343349
<!-- provider-matrix-end -->
344350

@@ -428,6 +434,7 @@ Providers in this category and their maintainers are:
428434
|[`SAKURACLOUD`](sakuracloud.md)|@ttkzw|
429435
|[`SOFTLAYER`](softlayer.md)|@jamielennox|
430436
|[`TRANSIP`](transip.md)|@blackshadev|
437+
|[`VERCEL`](vercel.md)|@SukkaW|
431438
|[`VULTR`](vultr.md)|@pgaskin|
432439

433440
### Requested providers
@@ -458,7 +465,6 @@ code to support this provider, we'd be glad to help in any way.
458465
* [Spaceship](https://github.com/StackExchange/dnscontrol/issues/3452) (#3452)
459466
* [SynergyWholesale](https://github.com/StackExchange/dnscontrol/issues/1605) (#1605)
460467
* [UltraDNS by Neustar / CSCGlobal](https://github.com/StackExchange/dnscontrol/issues/1533) (#1533)
461-
* [Vercel](https://github.com/StackExchange/dnscontrol/issues/3379) (#3379)
462468
* [Yandex Cloud DNS](https://github.com/StackExchange/dnscontrol/issues/3737) (#3737)
463469

464470
#### Q: Why are the above GitHub issues marked "closed"?

documentation/provider/vercel.md

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
## Configuration
2+
3+
To use this provider, add an entry to `creds.json` with `TYPE` set to `VERCEL`
4+
along with a [Vercel API Token](https://vercel.com/account/settings/tokens) and your team ID.
5+
6+
Example:
7+
8+
{% code title="creds.json" %}
9+
```json
10+
{
11+
"vercel": {
12+
"TYPE": "VERCEL",
13+
"team_id": "$VERCEL_TEAM_ID",
14+
"api_token": "$VERCEL_API_TOKEN"
15+
}
16+
}
17+
```
18+
{% endcode %}
19+
20+
**API Token**
21+
22+
You can create a Vercel API Token via [Vercel Account Settngs](https://vercel.com/account/settings/tokens).
23+
24+
**How to grab team ID**
25+
26+
Log in to your Vercel account and navigate to `https://vercel.com`. Switch to your desired team with the Vercel team switcher if needed.
27+
28+
![Example permissions configuration](../assets/providers/vercel/vercel-account-switcher.png)
29+
30+
Now you can find your team ID in your browser's address bar, copy the path (**without** any leading `/` or trailing `/`) and paste it into your `creds.json` file.
31+
32+
![Example permissions configuration](../assets/providers/vercel/vercel-team-id-slug.png)
33+
34+
If you are familiar with the Vercel API, you can also grab your team ID via Vercel's [Teams - List all teams API](https://vercel.com/docs/rest-api/reference/endpoints/teams/list-all-teams). In response's `id` field you will able to see a string starts with `team_`, and in response's `slug` field you will able to see a string consists of a slugified version of your team name. Both `id` and `slug` can be used as `team_id` for your `creds.json`.
35+
36+
**Legacy Vercel Account Domains**
37+
38+
If you are an early Vercel user (when Vercel didn't implement teams back then), the domains you added back then might not be migrated to your personal team. You will be able to find and manage those domains in Vercel's [Account Settings - Overview - Domains](https://vercel.com/account/domains).
39+
40+
In this case, you should use an empty string as the team ID:
41+
42+
{% code title="creds.json" %}
43+
```json
44+
{
45+
"vercel": {
46+
"TYPE": "VERCEL",
47+
"team_id": ""
48+
}
49+
}
50+
```
51+
{% endcode %}
52+
53+
It is also possible to manually migrate your domains from your Vercel account to your personal team via the link mentioned above. Whether you choose to migrate your domains or not is up to you, this provider supports both cases.
54+
55+
## Usage
56+
57+
An example configuration:
58+
59+
{% code title="dnsconfig.js" %}
60+
```javascript
61+
var REG_NONE = NewRegistrar("none");
62+
var DSP_VERCEL = NewDnsProvider("vercel");
63+
64+
D("example.com", REG_NONE, DnsProvider(DSP_VERCEL),
65+
A("test", "1.2.3.4"),
66+
);
67+
```
68+
{% endcode %}
69+
70+
## Caveats
71+
72+
### New domains
73+
74+
We do not support adding a domain to Vercel via `dnscontrol push`, as Vercel now requires a domain be associated with a project before it can utilize Vercel's DNS. You should use Vercel's [DNS Dashboard](https://vercel.com/dashboard/domains) to add a domain.
75+
76+
### System-managed Records
77+
78+
Vercel will create "system-managed records" for you when you add a domain to Vercel. Those records can not be deleted or modified.
79+
80+
You can add your own records and Vercel will prefer your created records over their system-managed records, but the system-managed records will always be present even if you add your own "override" records.
81+
82+
As of November 2025, the known system-managed records are:
83+
84+
- `CAA 0 issue "letsencrypt.org"`
85+
- Vercel uses Let's Encrypt to issue certificates for your project deployed on Vercel, thus Vercel automatically creates a CAA record to ensure Let's Encrypt can issue certificates, but you can always add your own CAA records.
86+
- `CNAME cname.vercel-dns.com.`
87+
- Vercel uses a CNAME record to point your deployed project to their infrastructure, but you can always add your own CNAME records (which allows you to put a third-party CDN in front of Vercel's infrastructure).
88+
89+
In Vercel's API, those system-managed records will have their `creator` set to `system`. We use this to identify and ignore system-managed records, to prevent DNSControl from interfering with them. You won't see them in `dnscontrol diff` or `dnscontrol preview`.
90+
91+
### Comment
92+
93+
This provider does not recognize Vercel DNS record comment. And we encourage you not to use it. You should use JavaScript comment in your `dnsconfig.js` instead.
94+
95+
In the future, we might use the comment field to store additional metadata for other purposes.
96+
97+
### CAA
98+
99+
As of November 2025, Vercel has a bug that does not accept CAA records with any extra fields that are not `cansigncansignhttpexchanges`:
100+
101+
```
102+
# OK
103+
CAA 0 issue "letsencrypt.org"
104+
CAA 0 issuewild "letsencrypt.org"
105+
CAA 0 issue "digicert.com; cansignhttpexchanges=yes"
106+
107+
# Panic
108+
CAA 0 issue "letsencrypt.org; validationmethods=dns-01"
109+
CAA 0 issue "letsencrypt.org; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234"
110+
```
111+
112+
This is most likely a bug on Vercel's side where Vercel misinterprets other fields as `cansignhttpexchanges`, as the API error response implies:
113+
114+
```
115+
invalid_value - Unexpected "cansignhttpexchanges" value.
116+
```
117+
118+
### Rate Limiting
119+
120+
Vercel is rate limiting requests somewhat heavily. Some of the rate limit and remaining quota is advertised in the API response headers (`x-ratelimit-limit`, `x-ratelimit-remaining`, and `x-ratelimit-reset`), some of HTTP 429 contains the `retry-after` response header, some of the rate limit rules can be found in [Vercel's API documentation](https://vercel.com/docs/limits#rate-limits).
121+
122+
So far, the known rate limit rules are:
123+
124+
- create up to 100 dns records per hour (3600 seconds)
125+
- update up to 50 dns records per minutes (60 seconds)
126+
127+
The rate limit rules for the following actions are unknown:
128+
129+
- list dns records - we assume 50 page per minute (60 seconds)
130+
- delete dns records - we assume 50 dns records per minute (60 seconds)
131+
132+
All operations do not share rate limit quota, each operation has its own rate limit quota.
133+
134+
We will burst through half of the quota, and then it spreads the requests evenly throughout the remaining window. This allows you to move fast and be able to revert accidental changes to the DNS config in a somewhat timely manner. We will retry rate-limited requests (status 429) and respect the advertised `Retry-After` delay.
135+
136+
If you are mass migrating your DNS records from another provider to Vercel, we recommended to upload a BIND zone file via [Vercel's DNS Dashboard](https://vercel.com/dashboard/domains). You can use DNSControl to manage your DNS records afterwards.
137+
138+
### Change Record Type
139+
140+
Vercel does not allow the record type to be changed after creation. If you try to update a record with a different type (e.g. changing `A` to `CNAME/ALIAS`), we will delete the old record and create a new one. This will count as two separate requests, which may exceed the rate limit. Also be careful about the downtime caused by the deletion and creation of records.
141+
142+
### Minimum TTL
143+
144+
Vercel enforces a minimum TTL of 60 seconds (1 minute) for all records. We will always override the TTL to 60 seconds if you try to set a lower TTL.

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ require (
7474
github.com/nicholas-fedor/shoutrrr v0.12.0
7575
github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481
7676
github.com/oracle/oci-go-sdk/v65 v65.104.0
77+
github.com/vercel/terraform-provider-vercel v1.14.1
7778
github.com/vultr/govultr/v2 v2.17.2
7879
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546
7980
golang.org/x/text v0.31.0
@@ -122,7 +123,9 @@ require (
122123
github.com/googleapis/gax-go/v2 v2.15.0 // indirect
123124
github.com/gopherjs/gopherjs v1.17.2 // indirect
124125
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
126+
github.com/hashicorp/go-hclog v1.6.3 // indirect
125127
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
128+
github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect
126129
github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 // indirect
127130
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect
128131
github.com/mattn/go-colorable v0.1.14 // indirect

go.sum

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ github.com/exoscale/egoscale v0.102.4/go.mod h1:ROSmPtle0wvf91iLZb09++N/9BH2Jo9X
126126
github.com/failsafe-go/failsafe-go v0.9.1 h1:PkKSKLSOPRyJMjx35SfuwQeDuPLB6lBhD+zpQcSe7NU=
127127
github.com/failsafe-go/failsafe-go v0.9.1/go.mod h1:sX5TZ4HrMLYSzErWeckIHRZWgZj9PbKMAEKOVLFWtfM=
128128
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
129+
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
129130
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
130131
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
131132
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
@@ -233,6 +234,8 @@ github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB1
233234
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
234235
github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
235236
github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
237+
github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
238+
github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
236239
github.com/hetznercloud/hcloud-go/v2 v2.30.0 h1:fgAUtCCw4PbJNSs9XPLHVu0//dTNMbPq8P/48ovmdG8=
237240
github.com/hetznercloud/hcloud-go/v2 v2.30.0/go.mod h1:zv7x2kM7xyJ5mW/+y4HbfxQYhk8TE57ypTa1hofsYdw=
238241
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.174 h1:FBlx7E5rl8doUTbizt+DXR0zU05Mu2oEYvc/2GMB7pc=
@@ -286,7 +289,9 @@ github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN
286289
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
287290
github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ=
288291
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
292+
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
289293
github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
294+
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
290295
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
291296
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
292297
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
@@ -299,6 +304,8 @@ github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA=
299304
github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps=
300305
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
301306
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
307+
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
308+
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
302309
github.com/mittwald/go-powerdns v0.6.7 h1:r638QOYLWyJ5Wy+qynlq5nTRlhmfQMJvM9BDsbhyiro=
303310
github.com/mittwald/go-powerdns v0.6.7/go.mod h1:zFe/i17IP6/NGFkWGGsPL0t7VrL6u14HU8Hr06X4Qmg=
304311
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -395,6 +402,7 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
395402
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
396403
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
397404
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
405+
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
398406
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
399407
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
400408
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
@@ -411,6 +419,8 @@ github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU=
411419
github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4=
412420
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
413421
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
422+
github.com/vercel/terraform-provider-vercel v1.14.1 h1:ghAjFkMMzka4XuoBYdu1OXM/K7FQEj8wUd+xMPPOGrg=
423+
github.com/vercel/terraform-provider-vercel v1.14.1/go.mod h1:AdFCiUD0XP8XOi6tnhaCh7I0vyq2TAPmI+GcIp3+7SI=
414424
github.com/vultr/govultr/v2 v2.17.2 h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs=
415425
github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI=
416426
github.com/xddxdd/ottoext v0.0.0-20221109171055-210517fa4419 h1:PT5KYEimicg1GRkBtBxCLcHWvMcBRGljOLwG/y4+T5c=
@@ -534,6 +544,7 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc
534544
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
535545
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
536546
golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
547+
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
537548
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
538549
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
539550
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

0 commit comments

Comments
 (0)