ACME DNS API
Google Domains ACME DNS API that allows users to complete ACME DNS-01 challenges for a domain
COMMUNITYNO AUTH0 INSTALLS
OpenAPI Specificationv3.0
{
"openapi": "3.0.0",
"servers": [
{
"url": "https://acmedns.googleapis.com/"
}
],
"info": {
"contact": {
"name": "Google",
"url": "https://google.com",
"x-twitter": "youtube"
},
"description": "Google Domains ACME DNS API that allows users to complete ACME DNS-01 challenges for a domain.",
"license": {
"name": "Creative Commons Attribution 3.0",
"url": "http://creativecommons.org/licenses/by/3.0/"
},
"termsOfService": "https://developers.google.com/terms/",
"title": "ACME DNS API",
"version": "v1",
"x-apisguru-categories": [
"analytics",
"media"
],
"x-logo": {
"url": "https://api.apis.guru/v2/cache/logo/https_upload.wikimedia.org_wikipedia_commons_e_e1_YouTube_play_buttom_icon_%282013-2017%29.svg"
},
"x-origin": [
{
"format": "google",
"url": "https://acmedns.googleapis.com/$discovery/rest?version=v1",
"version": "v1"
}
],
"x-providerName": "googleapis.com",
"x-serviceName": "acmedns"
},
"externalDocs": {
"url": "https://developers.google.com/domains/acme-dns/"
},
"tags": [
{
"name": "acmeChallengeSets"
}
],
"paths": {
"/v1/acmeChallengeSets/{rootDomain}": {
"get": {
"description": "Gets the ACME challenge set for a given domain name. Domain names must be provided in Punycode.",
"operationId": "acmedns.acmeChallengeSets.get",
"parameters": [
{
"description": "Required. SLD + TLD domain name to list challenges. For example, this would be \"google.com\" for any FQDN under \"google.com\". That includes challenges for \"subdomain.google.com\". This MAY be Unicode or Punycode.",
"in": "path",
"name": "rootDomain",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AcmeChallengeSet"
}
}
},
"description": "Successful response"
}
},
"tags": [
"acmeChallengeSets"
]
},
"parameters": [
{
"$ref": "#/components/parameters/_.xgafv"
},
{
"$ref": "#/components/parameters/access_token"
},
{
"$ref": "#/components/parameters/alt"
},
{
"$ref": "#/components/parameters/callback"
},
{
"$ref": "#/components/parameters/fields"
},
{
"$ref": "#/components/parameters/key"
},
{
"$ref": "#/components/parameters/oauth_token"
},
{
"$ref": "#/components/parameters/prettyPrint"
},
{
"$ref": "#/components/parameters/quotaUser"
},
{
"$ref": "#/components/parameters/upload_protocol"
},
{
"$ref": "#/components/parameters/uploadType"
}
]
},
"/v1/acmeChallengeSets/{rootDomain}:rotateChallenges": {
"parameters": [
{
"$ref": "#/components/parameters/_.xgafv"
},
{
"$ref": "#/components/parameters/access_token"
},
{
"$ref": "#/components/parameters/alt"
},
{
"$ref": "#/components/parameters/callback"
},
{
"$ref": "#/components/parameters/fields"
},
{
"$ref": "#/components/parameters/key"
},
{
"$ref": "#/components/parameters/oauth_token"
},
{
"$ref": "#/components/parameters/prettyPrint"
},
{
"$ref": "#/components/parameters/quotaUser"
},
{
"$ref": "#/components/parameters/upload_protocol"
},
{
"$ref": "#/components/parameters/uploadType"
}
],
"post": {
"description": "Rotate the ACME challenges for a given domain name. By default, removes any challenges that are older than 30 days. Domain names must be provided in Punycode.",
"operationId": "acmedns.acmeChallengeSets.rotateChallenges",
"parameters": [
{
"description": "Required. SLD + TLD domain name to update records for. For example, this would be \"google.com\" for any FQDN under \"google.com\". That includes challenges for \"subdomain.google.com\". This MAY be Unicode or Punycode.",
"in": "path",
"name": "rootDomain",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RotateChallengesRequest"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AcmeChallengeSet"
}
}
},
"description": "Successful response"
}
},
"tags": [
"acmeChallengeSets"
]
}
}
},
"components": {
"parameters": {
"_.xgafv": {
"description": "V1 error format.",
"in": "query",
"name": "$.xgafv",
"schema": {
"enum": [
"1",
"2"
],
"type": "string"
}
},
"access_token": {
"description": "OAuth access token.",
"in": "query",
"name": "access_token",
"schema": {
"type": "string"
}
},
"alt": {
"description": "Data format for response.",
"in": "query",
"name": "alt",
"schema": {
"enum": [
"json",
"media",
"proto"
],
"type": "string"
}
},
"callback": {
"description": "JSONP",
"in": "query",
"name": "callback",
"schema": {
"type": "string"
}
},
"fields": {
"description": "Selector specifying which fields to include in a partial response.",
"in": "query",
"name": "fields",
"schema": {
"type": "string"
}
},
"key": {
"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
"in": "query",
"name": "key",
"schema": {
"type": "string"
}
},
"oauth_token": {
"description": "OAuth 2.0 token for the current user.",
"in": "query",
"name": "oauth_token",
"schema": {
"type": "string"
}
},
"prettyPrint": {
"description": "Returns response with indentations and line breaks.",
"in": "query",
"name": "prettyPrint",
"schema": {
"type": "boolean"
}
},
"quotaUser": {
"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
"in": "query",
"name": "quotaUser",
"schema": {
"type": "string"
}
},
"uploadType": {
"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
"in": "query",
"name": "uploadType",
"schema": {
"type": "string"
}
},
"upload_protocol": {
"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
"in": "query",
"name": "upload_protocol",
"schema": {
"type": "string"
}
}
},
"schemas": {
"AcmeChallengeSet": {
"description": "The up-to-date ACME challenge set on a domain for an RPC. This contains all of the ACME TXT records that exist on the domain.",
"properties": {
"record": {
"description": "The ACME challenges on the requested domain represented as individual TXT records.",
"items": {
"$ref": "#/components/schemas/AcmeTxtRecord"
},
"type": "array"
}
},
"type": "object"
},
"AcmeTxtRecord": {
"description": "The TXT record message that represents an ACME DNS-01 challenge.",
"properties": {
"digest": {
"description": "Holds the ACME challenge data put in the TXT record. This will be checked to be a valid TXT record data entry.",
"type": "string"
},
"fqdn": {
"description": "The domain/subdomain for the record. In a request, this MAY be Unicode or Punycode. In a response, this will be in Unicode. The fqdn MUST contain the root_domain field on the request.",
"type": "string"
},
"updateTime": {
"description": "Output only. The time when this record was last updated. This will be in UTC time.",
"format": "google-datetime",
"readOnly": true,
"type": "string"
}
},
"type": "object"
},
"RotateChallengesRequest": {
"description": "The request message for the RotateChallenges RPC. Requires an access token, a root domain, and either records_to_add or records_to_remove to be populated. Records may be set for multiple subdomains at once to support SAN requests for multiple subdomains in a single domain. By default, ACME TXT record challenges that are older than 30 days will be removed. Set `keep_expired_records` to false if this behavior is undesired. There is a record maximum of 100 records per domain including expired records. Any request sent that would exceed this maximum will result in a FAILED_PRECONDITION error. NEXT ID: 6",
"properties": {
"accessToken": {
"description": "Required. ACME DNS access token. This is a base64 token secret that is procured from the Google Domains website. It authorizes ACME TXT record updates for a domain.",
"format": "byte",
"type": "string"
},
"keepExpiredRecords": {
"description": "Keep records older than 30 days that were used for previous requests.",
"type": "boolean"
},
"recordsToAdd": {
"description": "ACME TXT record challenges to add. Supports multiple challenges on the same FQDN.",
"items": {
"$ref": "#/components/schemas/AcmeTxtRecord"
},
"type": "array"
},
"recordsToRemove": {
"description": "ACME TXT record challenges to remove.",
"items": {
"$ref": "#/components/schemas/AcmeTxtRecord"
},
"type": "array"
}
},
"type": "object"
}
}
}
}