{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/getoneprofile-ai/json-schema/getoneprofile-ai-switch-plan-redirect-response-schema-schema.json",
  "title": "SwitchPlanRedirectResponseSchema",
  "description": "Where to send the customer to complete the plan change.\n\nThere is no \"completed\" case: Stripe confirms every plan change, so this\nalways carries a URL to leave for, except on a dry run.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/getoneprofile-ai-billing-api-openapi.yml#/components/schemas/SwitchPlanRedirectResponseSchema",
  "properties": {
    "redirect_url": {
      "anyOf": [
        {
          "format": "uri",
          "maxLength": 2083,
          "minLength": 1,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The URL to redirect the customer to. Null on a dry run, which opens no Stripe page: `type` still says which one the real call would open.",
      "title": "Redirect Url"
    },
    "type": {
      "description": "Which Stripe surface completes the change: 'checkout' for a first paid subscription, 'portal' for a change to an existing one.",
      "enum": [
        "checkout",
        "portal"
      ],
      "title": "Type",
      "type": "string"
    }
  },
  "required": [
    "type",
    "redirect_url"
  ],
  "type": "object"
}