{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/memo-bank/main/json-schema/memo-bank-redirect-mandate-signature-request-schema.json",
  "title": "RedirectMandateSignatureRequest",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/memo-bank-mandate-signature-requests-api-openapi.yml#/components/schemas/RedirectMandateSignatureRequest",
  "required": [
    "debtor_email",
    "id",
    "is_deleted",
    "language",
    "mode",
    "redirect_uri",
    "reference",
    "scheme",
    "signature_url",
    "status"
  ],
  "type": "object",
  "allOf": [
    {
      "$ref": "#/$defs/MandateSignatureRequestDiscriminator"
    },
    {
      "type": "object",
      "properties": {
        "signature_url": {
          "type": "string",
          "description": "URL the debtor must visit to sign the mandate."
        },
        "redirect_uri": {
          "type": "string",
          "description": "URL the debtor is redirected to after signing."
        }
      }
    }
  ],
  "$defs": {
    "Address": {
      "required": [
        "city",
        "country",
        "postal_code",
        "street"
      ],
      "type": "object",
      "properties": {
        "street": {
          "type": "string",
          "description": "Debtor's street name."
        },
        "postal_code": {
          "type": "string",
          "description": "Debtor's postal code."
        },
        "city": {
          "type": "string",
          "description": "Debtor's city."
        },
        "country": {
          "type": "string",
          "description": "Debtor's country code."
        }
      },
      "description": "Debtor's address."
    },
    "MandateSignatureRequestDebtor": {
      "required": [
        "iban",
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Debtor's name."
        },
        "iban": {
          "type": "string",
          "description": "Debtor's IBAN."
        },
        "address": {
          "$ref": "#/$defs/Address"
        }
      },
      "description": "Debtor information filled when the request was signed. This is available when the request is completed."
    },
    "MandateSignatureRequestDiscriminator": {
      "required": [
        "debtor_email",
        "id",
        "is_deleted",
        "language",
        "mode",
        "reference",
        "scheme",
        "status"
      ],
      "type": "object",
      "properties": {
        "reference": {
          "pattern": "^[A-Za-z0-9+?/\\-:().,'\\s]{1,35}$",
          "type": "string",
          "description": "The unique mandate reference."
        },
        "id": {
          "type": "string",
          "description": "ID of the mandate signature request.",
          "format": "uuid"
        },
        "scheme": {
          "type": "string",
          "description": "The mandate scheme.",
          "enum": [
            "b2b",
            "core"
          ]
        },
        "language": {
          "type": "string",
          "description": "The language used for the email and signature page for the debtor.",
          "default": "french",
          "enum": [
            "french",
            "english"
          ]
        },
        "status": {
          "type": "string",
          "description": "Current status of the mandate signature request.",
          "enum": [
            "sent",
            "expired",
            "completed"
          ]
        },
        "mode": {
          "type": "string",
          "description": "Define the delivery strategy of this signature request.",
          "enum": [
            "email",
            "redirect"
          ]
        },
        "contract_reference": {
          "type": "string",
          "description": "The contract reference attached to the mandate. This is optional metadata."
        },
        "is_deleted": {
          "type": "boolean",
          "description": "Whether or not this mandate signature request has been deleted."
        },
        "debtor": {
          "$ref": "#/$defs/MandateSignatureRequestDebtor"
        },
        "debtor_email": {
          "type": "string",
          "description": "The email address of the debtor."
        }
      }
    }
  }
}