{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/firstsales-io/json-schema/firstsales-io-disposable-check-result-schema.json",
  "title": "DisposableCheckResult",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/firstsales-io-openapi.json#/components/schemas/DisposableCheckResult",
  "type": "object",
  "properties": {
    "score": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "classification": {
      "type": "string",
      "enum": [
        "safe",
        "suspicious",
        "disposable",
        "high_risk"
      ]
    },
    "checks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pass",
              "warn",
              "fail"
            ]
          },
          "detail": {
            "type": "string"
          },
          "weight": {
            "type": "number"
          }
        },
        "required": [
          "label",
          "status",
          "detail",
          "weight"
        ]
      }
    },
    "details": {
      "type": "object",
      "properties": {
        "domain": {
          "type": "string"
        },
        "isDisposable": {
          "type": "boolean"
        },
        "domainAge": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "registeredAt": {
              "type": "string"
            },
            "ageDays": {
              "type": "number"
            }
          }
        },
        "mxRecords": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/MxRecord"
          }
        },
        "hasMx": {
          "type": "boolean"
        },
        "patternMatch": {
          "type": "boolean"
        },
        "databaseMatch": {
          "type": "boolean"
        }
      }
    }
  },
  "required": [
    "score",
    "classification",
    "checks",
    "details"
  ],
  "$defs": {
    "MxRecord": {
      "type": "object",
      "properties": {
        "exchange": {
          "type": "string"
        },
        "priority": {
          "type": "number"
        }
      },
      "required": [
        "exchange",
        "priority"
      ]
    }
  }
}