{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/justdomain-ai/json-schema/justdomain-ai-renewal-status-response-schema.json",
  "title": "RenewalStatusResponse",
  "description": "Where the latest renewal attempt got to. Polled by the renew sheet\nbetween \"we took the payment\" and \"the registry renewed it\", and read by\nthe dashboard strip to tell the automatic lane's states apart.\n\n`trigger` matters to the screen: \"we could not charge your card\" and \"your\ncard was declined when you pressed Renew\" are the same failure and two\ndifferent sentences, and only one of them should offer a Stripe portal.",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/mcp-openapi.json#/components/schemas/RenewalStatusResponse",
  "properties": {
    "attempt_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Attempt Id"
    },
    "state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "trigger": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Trigger"
    },
    "amount_minor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "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"
    },
    "new_expiry": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "New Expiry"
    },
    "error_message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Error Message"
    },
    "hosted_invoice_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Hosted Invoice Url"
    },
    "next_payment_attempt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Payment Attempt"
    },
    "charge_on": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Charge On"
    }
  },
  "type": "object"
}