{
  "openapi": "3.1.0",
  "info": {
    "title": "Add Domain API",
    "version": "0.2.0",
    "description": "Own web address for an AI-built site. Purchase mode registrar_checkout. No live quote, registration execution, or DNS writes."
  },
  "servers": [
    {
      "url": "https://www.adddomain.net"
    }
  ],
  "externalDocs": {
    "description": "Complete canonical website Agent Skill in HTML, with raw links, version and SHA-256",
    "url": "https://www.adddomain.net/skills/frontend-business-websites"
  },
  "paths": {
    "/api/hosting": {
      "get": {
        "operationId": "hostingRoutes",
        "summary": "DNS setup routes and record shapes for the supported publishing hosts. Final records come from the owner’s host settings; no DNS writes.",
        "responses": {
          "200": {
            "description": "Hosting route catalog with official sources",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/platforms": {
      "get": {
        "operationId": "platformRoutes",
        "summary": "Publishing and domain connection routes for ChatGPT, Claude, Gemini, Grok and other AI tools",
        "responses": {
          "200": {
            "description": "Platform routes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/check": {
      "get": {
        "operationId": "checkDomain",
        "summary": "Registry availability and dated price estimate for a name",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": true,
            "description": "A label (luna) or full domain (luna.com)",
            "schema": {
              "type": "string",
              "example": "luna"
            }
          },
          {
            "name": "tlds",
            "in": "query",
            "required": false,
            "description": "Comma-separated endings to check for a bare label (max 6); default com,si,co,net,org,app",
            "schema": {
              "type": "string",
              "example": "com,co"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid name",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/prices": {
      "get": {
        "operationId": "priceList",
        "summary": "Dated price list with renewal",
        "responses": {
          "200": {
            "description": "Price table",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/buy-link": {
      "get": {
        "operationId": "buyLink",
        "summary": "Registrar redirect URL and owner summary. The first-party URL records an aggregate redirect request before sending the visitor to the registrar; it does not establish arrival or purchase. No URL when registered.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "Full domain",
            "schema": {
              "type": "string",
              "example": "luna.com"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Link",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid domain",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/sites-dns": {
      "get": {
        "operationId": "sitesDnsRecords",
        "summary": "DNS records to connect the domain to a ChatGPT Site. This store does not write DNS.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "Apex domain the owner bought",
            "schema": {
              "type": "string",
              "example": "luna.com"
            }
          },
          {
            "name": "host",
            "in": "query",
            "required": false,
            "description": "Host to connect: www (default) or @",
            "schema": {
              "type": "string",
              "example": "www"
            }
          },
          {
            "name": "cf",
            "in": "query",
            "required": false,
            "description": "Value of the _cf-custom-hostname TXT from Site settings",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "openai",
            "in": "query",
            "required": false,
            "description": "Value of the _openai-site-verification TXT from Site settings",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Records",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/dns-verify": {
      "get": {
        "operationId": "verifyDns",
        "summary": "Check which of the records public DNS already sees. Visible DNS is not a live Site.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "Apex domain",
            "schema": {
              "type": "string",
              "example": "luna.com"
            }
          },
          {
            "name": "host",
            "in": "query",
            "required": false,
            "description": "Host",
            "schema": {
              "type": "string",
              "example": "www"
            }
          },
          {
            "name": "cf",
            "in": "query",
            "required": false,
            "description": "Expected TXT value",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "openai",
            "in": "query",
            "required": false,
            "description": "Expected TXT value",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Verification",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/store-status": {
      "get": {
        "operationId": "storeStatus",
        "summary": "Honest capability flags: purchase mode, affiliate configuration state, no live quote, no registration execution, no DNS writes",
        "responses": {
          "200": {
            "description": "Status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  }
}