ACME DNS API icon

ACME DNS API

Google Domains ACME DNS API that allows users to complete ACME DNS-01 challenges for a domain

COMMUNITYNO AUTH0 INSTALLS
API Docs
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"
      }
    }
  }
}