{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/Validator",
  "title": "Validator",
  "required": [
    "regex",
    "mask",
    "cardCodeMask",
    "cardCodeRegex",
    "weights",
    "useCvv",
    "useExpirationDate",
    "useCardHolderName",
    "useBillingAddress",
    "validCardLengths"
  ],
  "type": "object",
  "description": "Validator information.",
  "properties": {
    "regex": {
      "type": "string",
      "description": "[Regex](https://regexr.com/) information.",
      "nullable": true
    },
    "mask": {
      "type": "string",
      "description": "Validator mask.",
      "nullable": true
    },
    "cardCodeMask": {
      "type": "string",
      "description": "Card code regular mask.",
      "nullable": true
    },
    "cardCodeRegex": {
      "type": "string",
      "description": "Card code regular expression.",
      "nullable": true
    },
    "weights": {
      "type": "array",
      "description": "Array containing weigths information.",
      "items": {
        "type": "integer",
        "description": "Weigths information."
      },
      "nullable": true
    },
    "useCvv": {
      "type": "boolean",
      "description": "Indicates whether it is necessary to use the CVV code to complete a transaction with payment made by card."
    },
    "useExpirationDate": {
      "type": "boolean",
      "description": "Indicates whether it is necessary to use the expiration date to complete a card payment transaction."
    },
    "useCardHolderName": {
      "type": "boolean",
      "description": "Indicates whether it is necessary to use the card holder name to complete a payment transaction made by card."
    },
    "useBillingAddress": {
      "type": "boolean",
      "description": "Indicates whether it is necessary to use the billing address to complete a card payment transaction."
    },
    "validCardLengths": {
      "type": "string",
      "description": "Information about valid card lengths.",
      "nullable": true
    }
  }
}