{
  "openapi": "3.0.1",
  "info": {
    "title": "Domain & SSL Expiry Checker (RDAP + Certificate)",
    "description": "Bulk-check domain registration and SSL certificates in one pass. Registrar, creation and expiry dates, days left, nameservers, DNSSEC, availability via official RDAP (WHOIS fallback), plus TLS issuer, validity, SANs and errors. Flags anything expiring within N days.",
    "version": "1.0",
    "x-build-id": "izgXfkHKJH7wtsgfa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thomson-digital~domain-ssl-expiry-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thomson-digital-domain-ssl-expiry-checker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/thomson-digital~domain-ssl-expiry-checker/runs": {
      "post": {
        "operationId": "runs-sync-thomson-digital-domain-ssl-expiry-checker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/thomson-digital~domain-ssl-expiry-checker/run-sync": {
      "post": {
        "operationId": "run-sync-thomson-digital-domain-ssl-expiry-checker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "domains": {
            "title": "Domains or URLs",
            "type": "array",
            "description": "One per line. Bare domains, subdomains or full URLs. Registration data is looked up for the registrable domain (www.bbc.co.uk → bbc.co.uk); the SSL certificate is checked on the host as given.",
            "default": [
              "apify.com",
              "github.com",
              "www.bbc.co.uk"
            ],
            "items": {
              "type": "string"
            }
          },
          "namesToCheck": {
            "title": "Names to sweep across TLDs (optional)",
            "type": "array",
            "description": "Optional brand / name ideas without a TLD (e.g. mycoolstartup). Each is combined with every TLD below to check availability.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tlds": {
            "title": "TLDs for the sweep",
            "type": "array",
            "description": "TLDs combined with each name above, e.g. com, net, io, ai, co, app.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "checkDomain": {
            "title": "Check domain registration (RDAP / WHOIS)",
            "type": "boolean",
            "description": "Registrar, created / updated / expiry dates, days until expiry, statuses, nameservers, DNSSEC, and registered vs available.",
            "default": true
          },
          "checkSsl": {
            "title": "Check SSL / TLS certificate",
            "type": "boolean",
            "description": "Connect on port 443 and report issuer, validity window, days left, SANs, key, TLS version and whether the certificate validates.",
            "default": true
          },
          "sslHost": {
            "title": "Host for the SSL check",
            "enum": [
              "asGiven",
              "registrable"
            ],
            "type": "string",
            "description": "Check the certificate on the host exactly as given (www.example.com) or on the registrable domain (example.com).",
            "default": "asGiven"
          },
          "warnDays": {
            "title": "Alert window (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Rows get an alert (domain-expiring-soon, ssl-expiring-soon, …) when the domain or certificate expires within this many days.",
            "default": 30
          },
          "onlyAlerts": {
            "title": "Only output rows with an alert",
            "type": "boolean",
            "description": "Great for scheduled monitoring: only expiring / expired / invalid / available domains are written (and charged).",
            "default": false
          },
          "whoisFallback": {
            "title": "WHOIS fallback when RDAP is unavailable",
            "type": "boolean",
            "description": "Some ccTLDs (e.g. .de, .co.uk varies) have no RDAP; query their WHOIS server on port 43 instead.",
            "default": true
          },
          "maxDomains": {
            "title": "Max domains",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on domains checked per run.",
            "default": 5000
          },
          "maxConcurrency": {
            "title": "Max concurrent domains",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Domains processed in parallel.",
            "default": 10
          },
          "perRegistryConcurrency": {
            "title": "Max parallel requests per registry",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Keeps each RDAP / WHOIS server below its rate limit.",
            "default": 4
          },
          "requestTimeoutSecs": {
            "title": "Timeout (seconds)",
            "minimum": 3,
            "maximum": 60,
            "type": "integer",
            "description": "Timeout per lookup / TLS connection.",
            "default": 15
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries on rate limits and network errors.",
            "default": 2
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}