{
  "openapi": "3.0.1",
  "info": {
    "title": "EmailValidation",
    "version": "v1"
  },
  "paths": {
    "/EmailValidation/IsValidSimple.json": {
      "post": {
        "tags": [
          "EmailValidation"
        ],
        "summary": "Checks if an email address is valid",
        "requestBody": {
          "description": "The email address to validate",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidSimpleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidSimpleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidSimpleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EmailValidationOutput"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailValidationOutput"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailValidationOutput"
                }
              }
            }
          }
        }
      }
    },
    "/EmailValidation/IsValid.json": {
      "post": {
        "tags": [
          "EmailValidation"
        ],
        "summary": "Checks if an email address is valid",
        "requestBody": {
          "description": "The email address to validate",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EmailValidationOutput"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailValidationOutput"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailValidationOutput"
                }
              }
            }
          }
        }
      }
    },
    "/EmailValidation/IsValidMultiple.json": {
      "post": {
        "tags": [
          "EmailValidation"
        ],
        "summary": "Checks if multiple email addresses are valid",
        "description": "As email validation can be a lengthy process, do not supply more email addresses than can be validated within your timeout\r\nsettings.",
        "requestBody": {
          "description": "The email addresses to validate",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidMultipleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidMultipleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IsValidMultipleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmailValidationOutput"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmailValidationOutput"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmailValidationOutput"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/EmailValidation/CleanseSimple.json": {
      "post": {
        "tags": [
          "EmailValidation"
        ],
        "summary": "Checks if an email address is valid and returns suggestions for possible corrections and additional information",
        "requestBody": {
          "description": "The email address to validate",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseSimpleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseSimpleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseSimpleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EmailCleanseOutput"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailCleanseOutput"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailCleanseOutput"
                }
              }
            }
          }
        }
      }
    },
    "/EmailValidation/Cleanse.json": {
      "post": {
        "tags": [
          "EmailValidation"
        ],
        "summary": "Checks if an email address is valid and returns suggestions for possible corrections and additional information",
        "requestBody": {
          "description": "The email address to validate",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EmailCleanseOutput"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailCleanseOutput"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailCleanseOutput"
                }
              }
            }
          }
        }
      }
    },
    "/EmailValidation/CleanseMultiple.json": {
      "post": {
        "tags": [
          "EmailValidation"
        ],
        "summary": "Checks if multiple email addresses are valid and returns suggestions for possible corrections and additional information",
        "description": "As email validation can be a lengthy process, do not supply more email addresses than can be validated within your timeout\r\nsettings.",
        "requestBody": {
          "description": "The email addresses to validate",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseMultipleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseMultipleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CleanseMultipleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmailCleanseOutput"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmailCleanseOutput"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmailCleanseOutput"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Address": {
        "type": "object",
        "properties": {
          "Lines": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BusinessInputRecord": {
        "type": "object",
        "properties": {
          "Name": {
            "$ref": "#/components/schemas/Name"
          },
          "Address": {
            "$ref": "#/components/schemas/Address"
          },
          "CompanyName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CleanseMultipleRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "The username to authenticate with",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "The password to authenticate with",
            "nullable": true
          },
          "requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailCleanseRequest"
            },
            "description": "The email addresses and associated details to validate",
            "nullable": true
          },
          "options": {
            "$ref": "#/components/schemas/CleanseOptions"
          }
        },
        "additionalProperties": false
      },
      "CleanseOptions": {
        "type": "object",
        "properties": {
          "MissingMXRecordHandling": {
            "$ref": "#/components/schemas/MissingMXRecordHandling"
          },
          "ParseName": {
            "type": "boolean",
            "description": "Indicates whether the output should include a ParsedName property containing the details of the name\r\nwhich can be parsed from the mailbox, e.g. j.smith@gmail.com would be parsed to Forename = \"J\", Surname = \"Smith\"."
          },
          "OutputNameCheck": {
            "type": "boolean",
            "description": "Indicates whether the output should include a NameCheck property indicating whether the parsed name correlates with,\r\nconflicts with or is missing compared to the supplied name in the input."
          }
        },
        "additionalProperties": false,
        "description": "Use these options to control how the email cleansing process works."
      },
      "CleanseRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "The username to authenticate with",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "The password to authenticate with",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The email address to validate",
            "nullable": true
          },
          "level": {
            "$ref": "#/components/schemas/EmailValidationLevel"
          },
          "record": {
            "$ref": "#/components/schemas/BusinessInputRecord"
          },
          "options": {
            "$ref": "#/components/schemas/CleanseOptions"
          }
        },
        "additionalProperties": false
      },
      "CleanseSimpleRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "The username to authenticate with",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "The password to authenticate with",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The email address to validate",
            "nullable": true
          },
          "level": {
            "$ref": "#/components/schemas/EmailValidationLevel"
          },
          "title": {
            "type": "string",
            "description": "The person's title",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "description": "The person's first name",
            "nullable": true
          },
          "middleName": {
            "type": "string",
            "description": "The person's middle name",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "The person's last name",
            "nullable": true
          },
          "company": {
            "type": "string",
            "description": "The company's name",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "The mailing address of the person or company",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmailCleanseOutput": {
        "type": "object",
        "properties": {
          "Status": {
            "$ref": "#/components/schemas/Status"
          },
          "Result": {
            "$ref": "#/components/schemas/EmailValidationResult"
          },
          "OriginalValid": {
            "type": "boolean",
            "description": "Indicates if the original email address was valid before being modified"
          },
          "EmailType": {
            "$ref": "#/components/schemas/EmailTypeResult"
          },
          "SuggestedEmailAddress": {
            "type": "string",
            "description": "A suggested correction of the email address",
            "nullable": true
          },
          "Comment": {
            "type": "string",
            "description": "A free-text description of why the email address was modified",
            "nullable": true
          },
          "Salutation": {
            "type": "string",
            "description": "The suggested name to be used in the greeting line of an email",
            "nullable": true
          },
          "StructureUsed": {
            "type": "string",
            "description": "A description of the structure of the username part of the email address",
            "nullable": true
          },
          "ParsedName": {
            "$ref": "#/components/schemas/Name"
          },
          "NameCheck": {
            "$ref": "#/components/schemas/EmailNameCheckResult"
          }
        },
        "additionalProperties": false
      },
      "EmailCleanseRequest": {
        "type": "object",
        "properties": {
          "Email": {
            "type": "string",
            "description": "The email address to validate",
            "nullable": true
          },
          "Level": {
            "$ref": "#/components/schemas/EmailValidationLevel"
          },
          "Record": {
            "$ref": "#/components/schemas/BusinessInputRecord"
          }
        },
        "additionalProperties": false
      },
      "EmailNameCheckResult": {
        "enum": [
          "UnnamedMailbox",
          "NoNameSupplied",
          "NameMatchesMailbox",
          "NameConflictsWithMailbox"
        ],
        "type": "string"
      },
      "EmailTypeResult": {
        "enum": [
          "Personal",
          "ISP",
          "Free",
          "Generic",
          "Disposable",
          "Blank",
          "SpamTrap"
        ],
        "type": "string"
      },
      "EmailValidationLevel": {
        "enum": [
          "Syntax",
          "MX",
          "Server",
          "Address"
        ],
        "type": "string"
      },
      "EmailValidationOutput": {
        "type": "object",
        "properties": {
          "Status": {
            "$ref": "#/components/schemas/Status"
          },
          "Result": {
            "$ref": "#/components/schemas/EmailValidationResult"
          }
        },
        "additionalProperties": false
      },
      "EmailValidationRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "EmailValidationResult": {
        "enum": [
          "Blank",
          "Invalid",
          "Inconclusive",
          "GreyListed",
          "CatchAll",
          "Valid"
        ],
        "type": "string"
      },
      "IsValidMultipleRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "The username to authenticate with",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "The password to authenticate with",
            "nullable": true
          },
          "requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailValidationRequest"
            },
            "description": "The details of the email addresses to validate and the level to validate each one to",
            "nullable": true
          },
          "options": {
            "type": "object",
            "description": "Any custom options to control how the details should be validated. See the API documentation website for a list of currently supported option.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "IsValidRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "The username to authenticate with",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "The password to authenticate with",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The email address to validate",
            "nullable": true
          },
          "level": {
            "$ref": "#/components/schemas/EmailValidationLevel"
          },
          "options": {
            "type": "object",
            "description": "Any custom options to control how the details should be validated. See the API documentation website for a list of currently supported option.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "IsValidSimpleRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "The username to authenticate with",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "The password to authenticate with",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The email address to validate",
            "nullable": true
          },
          "level": {
            "$ref": "#/components/schemas/EmailValidationLevel"
          }
        },
        "additionalProperties": false
      },
      "MissingMXRecordHandling": {
        "enum": [
          "ServerCheck",
          "AssumeValid",
          "AssumeInvalid"
        ],
        "type": "string"
      },
      "Name": {
        "type": "object",
        "properties": {
          "Title": {
            "type": "string",
            "nullable": true
          },
          "Forename": {
            "type": "string",
            "nullable": true
          },
          "MiddleName": {
            "type": "string",
            "nullable": true
          },
          "Surname": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Option": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The name of the option. For an option to have any effect, the name must be one that the service expects.\r\nAny other options that are supplied should be ignored",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The value for the option. Although this is supplied as a string, it may be converted to other formats. If\r\nthe string is not in the expected format an error may be thrown.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an option that the caller can use to control how a request is executed"
      },
      "Status": {
        "type": "object",
        "properties": {
          "Success": {
            "type": "boolean"
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "CreditsRemaining": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "UserPass": {
        "type": "http",
        "scheme": "basic"
      },
      "ApiKey": {
        "type": "apiKey",
        "name": "key",
        "in": "query"
      },
      "JWT": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "UserPass": [ ],
      "ApiKey": [ ],
      "JWT": [ ]
    }
  ]
}