CustomDomain · Schema

MonitorView

CompanyCustom DomainsDNSSSLEdge ProxySaaS InfrastructureWhite LabelMCP

Properties

Name Type Description
connection_id string
domain string
watched boolean
active boolean
every string How often the domain is checked (hour).
last_checked_at stringnull
next_check_at string
result string The last check. `drift` is only reported after a second, independent look at the zone's own nameservers confirmed it; `inconclusive` means the lookup did not answer and the previous finding stands; `u
reason string Set when `result` is `unconfirmed`, why the nameservers could not confirm.
unconfirmed_checks integer Set when `result` is `unconfirmed`, how many checks in a row. At 3 the workspace gets one inbox entry.
drift_since string
drift array
checked integer Records compared in the last check.
error string
action object What was done about the drift: `auto_fixed` (put back), `fix_failed` (the repair failed, did not hold, or the records were put back 3 times in 24 hours and disappeared again) or `action_required` (lef
attention string Set while drift needs the tenant (action_required, fix_failed) or is being repaired (drift).
repair object
alerts object
watching array The records the domain is held to.
history array
View JSON Schema on GitHub

JSON Schema

customdomain-ai-monitor-view-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/customdomain-ai/json-schema/customdomain-ai-monitor-view-schema.json",
  "title": "MonitorView",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/customdomain-ai-monitor-api-openapi.yml#/components/schemas/MonitorView",
  "type": "object",
  "required": [
    "connection_id",
    "domain",
    "watched",
    "active",
    "every",
    "last_checked_at",
    "result",
    "drift",
    "checked",
    "repair",
    "alerts"
  ],
  "properties": {
    "connection_id": {
      "type": "string"
    },
    "domain": {
      "type": "string"
    },
    "watched": {
      "type": "boolean"
    },
    "active": {
      "type": "boolean"
    },
    "every": {
      "type": "string",
      "description": "How often the domain is checked (hour)."
    },
    "last_checked_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "next_check_at": {
      "type": "string",
      "format": "date-time"
    },
    "result": {
      "type": "string",
      "enum": [
        "ok",
        "drift",
        "inconclusive",
        "unconfirmed",
        "not_checked",
        "not_watched"
      ],
      "description": "The last check. `drift` is only reported after a second, independent look at the zone's own nameservers confirmed it; `inconclusive` means the lookup did not answer and the previous finding stands; `unconfirmed` means the first lookup saw a change the zone's own nameservers could not be asked to confirm (see `reason`): earlier drift stands and nothing is restored."
    },
    "reason": {
      "type": "string",
      "enum": [
        "ns_lookup_failed",
        "timeout",
        "all_servers_refused",
        "no_server_answered",
        "delegated",
        "unsupported_type"
      ],
      "description": "Set when `result` is `unconfirmed`, why the nameservers could not confirm."
    },
    "unconfirmed_checks": {
      "type": "integer",
      "description": "Set when `result` is `unconfirmed`, how many checks in a row. At 3 the workspace gets one inbox entry."
    },
    "drift_since": {
      "type": "string",
      "format": "date-time"
    },
    "drift": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/DriftRecord"
      }
    },
    "checked": {
      "type": "integer",
      "description": "Records compared in the last check."
    },
    "error": {
      "type": "string"
    },
    "action": {
      "type": "object",
      "description": "What was done about the drift: `auto_fixed` (put back), `fix_failed` (the repair failed, did not hold, or the records were put back 3 times in 24 hours and disappeared again) or `action_required` (left for the tenant).",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "auto_fixed",
            "fix_failed",
            "action_required"
          ]
        },
        "at": {
          "type": "string",
          "format": "date-time"
        },
        "description": {
          "type": "string"
        }
      }
    },
    "attention": {
      "type": "string",
      "enum": [
        "action_required",
        "fix_failed",
        "drift"
      ],
      "description": "Set while drift needs the tenant (action_required, fix_failed) or is being repaired (drift)."
    },
    "repair": {
      "type": "object",
      "required": [
        "automatic",
        "detail"
      ],
      "properties": {
        "automatic": {
          "type": "boolean",
          "description": "True when CustomDomain™ holds continuous access and puts disappeared records back itself."
        },
        "paused": {
          "type": "boolean",
          "description": "True when CustomDomain™ holds the access (`via`) but this deployment has automatic repair switched off (`MONITOR_AUTO_REPAIR`): missing records are reported, not put back. Omitted otherwise."
        },
        "via": {
          "type": "string",
          "enum": [
            "managed_dns",
            "sign_in",
            "domain_connect",
            "provider_account"
          ]
        },
        "detail": {
          "type": "string"
        }
      }
    },
    "alerts": {
      "type": "object",
      "properties": {
        "webhooks": {
          "type": "boolean"
        },
        "email": {
          "type": "boolean"
        }
      }
    },
    "watching": {
      "type": "array",
      "description": "The records the domain is held to.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      }
    },
    "history": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/DomainEvent"
      }
    }
  },
  "$defs": {
    "DomainEvent": {
      "type": "object",
      "required": [
        "id",
        "domain",
        "kind",
        "created_at"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "application_id": {
          "type": "string"
        },
        "connection_id": {
          "type": "string"
        },
        "domain": {
          "type": "string"
        },
        "kind": {
          "type": "string",
          "description": "One of connection.created, connection.applied, connection.live, connection.failed, connection.records.updated, connection.reapply.failed, connection.records_outdated, connection.disconnected, records.removed, records.rewritten, certificate.issued, certificate.renewed, certificate.failed, certificate.expiring, certificate.removed, drift.found, drift.fixed, drift.fix_failed, drift.action_required, drift.restored, access.granted, access.revoked, access.needs_reconnect, nameservers.started, nameservers.dnssec_cleared, nameservers.changed, nameservers.active, nameservers.failed, nameservers.rolled_back, nameservers.drifted. A connection or certificate kind that is also a webhook event type is written with the webhook, so the timeline and an integrator see the same history."
        },
        "detail": {
          "type": "object",
          "additionalProperties": true
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "DriftRecord": {
      "type": "object",
      "required": [
        "subdomain",
        "type",
        "verdict",
        "expected"
      ],
      "properties": {
        "subdomain": {
          "type": "string",
          "description": "The record's name relative to the domain (\"@\" for the domain itself)."
        },
        "type": {
          "type": "string"
        },
        "verdict": {
          "type": "string",
          "enum": [
            "record_missing",
            "record_changed"
          ]
        },
        "expected": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "observed": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/customdomain-ai-monitor-view"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.