{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/justdomain-ai/json-schema/justdomain-ai-renewal-price-change-response-schema.json",
  "title": "RenewalPriceChangeResponse",
  "description": "Screen S7: the renewal price moved and we did not charge.\n\n**`last_paid_amount_minor` is not optional in practice.** Daisy's rule:\na price-change screen that cannot state what you paid last time has no\nreason to exist, so `pending` is never true without it — the frontend\nfalls back to the normal renewal path instead of rendering a comparison\nagainst nothing.\n\nThere is deliberately no `what_changed` field. The row renders only if we\ncan decompose the price into the registry's part and ours, and we cannot:\nOpenprovider quotes one reseller renewal price per ending with no split.\nShipping the field as \"Unknown\" would put a guess inside a facts block\nwhose entire job is to be checkable, so the field does not exist and the\nrow is omitted.",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/mcp-openapi.json#/components/schemas/RenewalPriceChangeResponse",
  "properties": {
    "pending": {
      "type": "boolean",
      "title": "Pending",
      "default": false
    },
    "decision": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Decision"
    },
    "domain": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Domain"
    },
    "expires_on": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expires On"
    },
    "new_expiry": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "New Expiry"
    },
    "charge_on": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Charge On"
    },
    "decide_by": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Decide By"
    },
    "amount_minor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Amount Minor"
    },
    "last_paid_amount_minor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Paid Amount Minor"
    },
    "currency": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Currency"
    },
    "years": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Years"
    },
    "term_years": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Term Years"
    },
    "card_brand": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Card Brand"
    },
    "card_last4": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Card Last4"
    }
  },
  "type": "object"
}