object ContactsImportCsv404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/error"
      },
      "uniqueItems": true
    }
  },
  "description": "If any of the specified lists do not exist."
}
object ContactsImportCsvRequest
{
  "type": "object",
  "required": [
    "file_type",
    "field_mappings"
  ],
  "properties": {
    "list_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "All contacts will be added to each of the specified lists."
    },
    "file_type": {
      "enum": [
        "csv"
      ],
      "type": "string",
      "description": "Upload file type."
    },
    "field_mappings": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "nullable": true
          }
        ]
      },
      "minItems": 1,
      "description": "Import file header to reserved/custom field mapping.",
      "uniqueItems": false
    }
  }
}
object ContactsImportCsvResponse
{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The ID of the import job."
    },
    "upload_uri": {
      "type": "string",
      "description": "The URI to PUT the upload file to."
    },
    "upload_headers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "header",
          "value"
        ],
        "properties": {
          "value": {
            "type": "string"
          },
          "header": {
            "type": "string"
          }
        }
      },
      "description": "A list of headers that must be included in PUT request."
    }
  }
}
object ContactsSearchByEmails500Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object ContactsSearchByEmailsRequest
{
  "type": "object",
  "example": {
    "emails": [
      "jane_doe@example.com",
      "john_doe@example.com",
      "joann_doe@example.com"
    ]
  },
  "required": [
    "emails"
  ],
  "properties": {
    "emails": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100
      },
      "description": "One or more primary emails and/or alternate emails to search through your contacts for."
    }
  },
  "description": ""
}
object ContactsSearchByEmailsResponse
{
  "type": "object",
  "properties": {
    "result": {
      "type": "object",
      "x-patternProperties": {
        "^[A-Za-z0-9\\._%\\+-]+@[A-Za-z0-9\\.-]+\\.[A-Za-z]{2,6}$": {
          "type": "object",
          "properties": {
            "error": {
              "type": "string"
            },
            "contact": {
              "$ref": "#/components/schemas/contact-details3"
            }
          },
          "description": "This will be one of the specified email adresses."
        }
      }
    }
  }
}
object ContactsSearchContactsByQuery400Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object ContactsSearchContactsByQuery500Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object ContactsSearchContactsByQueryRequest
{
  "type": "object",
  "example": {
    "query": "email LIKE 'ENTER_COMPLETE_OR_PARTIAL_EMAIL_ADDRESS_HERE%' AND CONTAINS(list_ids, 'YOUR_LIST_IDs')"
  },
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "x-Description": "An SGQL search string or other pattern."
    }
  }
}
object ContactsSearchContactsByQueryResponse
{
  "type": "object",
  "required": [
    "contact_count"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/contact-details3"
      }
    },
    "_metadata": {
      "$ref": "#/components/schemas/selfmetadata"
    },
    "contact_count": {
      "type": "number",
      "description": "The total number of contacts matched."
    }
  }
}
object ContactsUpsertBatchContacts400Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/error"
      }
    }
  }
}
object ContactsUpsertBatchContactsRequest
{
  "type": "object",
  "required": [
    "contacts"
  ],
  "properties": {
    "contacts": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/contact-request"
      },
      "maxItems": 30000,
      "minItems": 1,
      "description": "One or more contacts objects that you intend to upsert. The available fields for a contact, including the required `email` field are described below."
    },
    "list_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of List ID strings that this contact will be added to."
    }
  }
}
object ContactsUpsertBatchContactsResponse
{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "Indicates that the contacts are queued for processing. Check the job status with the \"Import Contacts Status\" endpoint."
    }
  }
}
object CsvUiOnlyGenerateCsvDownloadUrl404Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object CsvUiOnlyGenerateCsvDownloadUrl500Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object CsvUiOnlyGenerateCsvDownloadUrlResponse
{
  "type": "object",
  "required": [
    "csv"
  ],
  "properties": {
    "csv": {
      "type": "string",
      "pattern": "^((http[s]?|ftp):\\/)?\\/?([^:\\/\\s]+)((\\/\\w+)*\\/)([\\w\\-\\.]+[^#?\\s]+)(.*)?(#[\\w\\-]+)?$",
      "minLength": 5,
      "description": "Returns the aws signed link to the csv file which mako UI should perform a get on to trigger the csv download for the user"
    },
    "presigned_url": {
      "type": "string",
      "format": "uri",
      "description": "A signed link that will allow you to download the CSV file requested by the Request a CSV endpoint."
    }
  }
}
object CsvUiOnlyRequestCsvDownload400Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object CsvUiOnlyRequestCsvDownload429Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object CsvUiOnlyRequestCsvDownload500Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object CsvUiOnlyRequestCsvDownloadResponse
{
  "type": "object",
  "properties": {
    "status": {
      "enum": [
        "pending"
      ],
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  }
}
object CustomFieldsCreateDefinition400Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/error"
      },
      "uniqueItems": true
    }
  }
}
object CustomFieldsCreateDefinitionRequest
{
  "type": "object",
  "example": {
    "name": "custom_field_name",
    "field_type": "Text"
  },
  "required": [
    "name",
    "field_type"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1
    },
    "field_type": {
      "enum": [
        "Text",
        "Number",
        "Date"
      ],
      "type": "string"
    }
  }
}
object CustomFieldsCreateDefinitionResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/custom_field_definitions_response"
    },
    {
      "type": "object",
      "properties": {
        "_metadata": {
          "$ref": "#/components/schemas/_metadata"
        }
      }
    }
  ]
}
object CustomFieldsDeleteDefinitionResponse
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/error"
      },
      "uniqueItems": true
    }
  }
}
object CustomFieldsGetAllFieldDefinitionsResponse
{
  "type": "object",
  "required": [
    "custom_fields",
    "reserved_fields"
  ],
  "properties": {
    "_metadata": {
      "$ref": "#/components/schemas/_metadata"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/custom_field_definitions_response"
      }
    },
    "reserved_fields": {
      "$ref": "#/components/schemas/reserved_field_definitions_response"
    }
  },
  "maxProperties": 120,
  "minProperties": 0
}
object CustomFieldsUpdateDefinition400Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/error"
      },
      "uniqueItems": true
    }
  }
}
object CustomFieldsUpdateDefinition404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/error"
      },
      "uniqueItems": true
    }
  }
}
object CustomFieldsUpdateDefinitionRequest
{
  "type": "object",
  "example": {
    "name": "new_custom_field_name"
  },
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1
    }
  }
}
object CustomFieldsUpdateDefinitionResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/custom_field_definitions_response"
    },
    {
      "type": "object",
      "properties": {
        "_metadata": {
          "$ref": "#/components/schemas/_metadata"
        }
      }
    }
  ]
}
object DesignsApiDeleteDesignByIdResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object DesignsApiGetListResponse
{
  "type": "object",
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/design-output-summary"
      }
    },
    "_metadata": {
      "$ref": "#/components/schemas/_metadata"
    }
  }
}
object DesignsApiListPreBuiltDesignsResponse
{
  "type": "object",
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/design-output-summary"
      }
    },
    "_metadata": {
      "$ref": "#/components/schemas/_metadata"
    }
  }
}
object DesignsApiUpdateDesignByIdRequest
{
  "type": "object",
  "example": {
    "name": "Ahoy, World!",
    "subject": "Getting Started",
    "categories": [
      "promotions"
    ],
    "html_content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html data-editor-version=\"2\" class=\"sg-campaigns\" xmlns=\"http://www.w3.org/1999/xhtml\">\n    <head>\n      <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1\">\n      <!--[if !mso]><!-->\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\">\n      <!--<![endif]-->\n      <!--[if (gte mso 9)|(IE)]>\n      <xml>\n        <o:OfficeDocumentSettings>\n          <o:AllowPNG/>\n          <o:PixelsPerInch>96</o:PixelsPerInch>\n        </o:OfficeDocumentSettings>\n      </xml>\n      <![endif]-->\n      <!--[if (gte mso 9)|(IE)]>\n  <style type=\"text/css\">\n    body {width: 600px;margin: 0 auto;}\n    table {border-collapse: collapse;}\n    table, td {mso-table-lspace: 0pt;mso-table-rspace: 0pt;}\n    img {-ms-interpolation-mode: bicubic;}\n  </style>\n<![endif]-->\n      <style type=\"text/css\">\n    body, p, div {\n      font-family: arial,helvetica,sans-serif;\n      font-size: 14px;\n    }\n    body {\n      color: #000000;\n    }\n    body a {\n      color: #1188E6;\n      text-decoration: none;\n    }\n    p { margin: 0; padding: 0; }\n    table.wrapper {\n      width:100% !important;\n      table-layout: fixed;\n      -webkit-font-smoothing: antialiased;\n      -webkit-text-size-adjust: 100%;\n      -moz-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n    }\n    img.max-width {\n      max-width: 100% !important;\n    }\n    .column.of-2 {\n      width: 50%;\n    }\n    .column.of-3 {\n      width: 33.333%;\n    }\n    .column.of-4 {\n      width: 25%;\n    }\n    ul ul ul ul  {\n      list-style-type: disc !important;\n    }\n    ol ol {\n      list-style-type: lower-roman !important;\n    }\n    ol ol ol {\n      list-style-type: lower-latin !important;\n    }\n    ol ol ol ol {\n      list-style-type: decimal !important;\n    }\n    @media screen and (max-width:480px) {\n      .preheader .rightColumnContent,\n      .footer .rightColumnContent {\n        text-align: left !important;\n      }\n      .preheader .rightColumnContent div,\n      .preheader .rightColumnContent span,\n      .footer .rightColumnContent div,\n      .footer .rightColumnContent span {\n        text-align: left !important;\n      }\n      .preheader .rightColumnContent,\n      .preheader .leftColumnContent {\n        font-size: 80% !important;\n        padding: 5px 0;\n      }\n      table.wrapper-mobile {\n        width: 100% !important;\n        table-layout: fixed;\n      }\n      img.max-width {\n        height: auto !important;\n        max-width: 100% !important;\n      }\n      a.bulletproof-button {\n        display: block !important;\n        width: auto !important;\n        font-size: 80%;\n        padding-left: 0 !important;\n        padding-right: 0 !important;\n      }\n      .columns {\n        width: 100% !important;\n      }\n      .column {\n        display: block !important;\n        width: 100% !important;\n        padding-left: 0 !important;\n        padding-right: 0 !important;\n        margin-left: 0 !important;\n        margin-right: 0 !important;\n      }\n      .social-icon-column {\n        display: inline-block !important;\n      }\n    }\n  </style>\n      <!--user entered Head Start--><!--End Head user entered-->\n    </head>\n    <body>\n      <center class=\"wrapper\" data-link-color=\"#1188E6\" data-body-style=\"font-size:14px; font-family:arial,helvetica,sans-serif; color:#000000; background-color:#FFFFFF;\">\n        <div class=\"webkit\">\n          <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" class=\"wrapper\" bgcolor=\"#FFFFFF\">\n            <tr>\n              <td valign=\"top\" bgcolor=\"#FFFFFF\" width=\"100%\">\n                <table width=\"100%\" role=\"content-container\" class=\"outer\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                  <tr>\n                    <td width=\"100%\">\n                      <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                        <tr>\n                          <td>\n                            <!--[if mso]>\n    <center>\n    <table><tr><td width=\"600\">\n  <![endif]-->\n                                    <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"width:100%; max-width:600px;\" align=\"center\">\n                                      <tr>\n                                        <td role=\"modules-container\" style=\"padding:0px 0px 0px 0px; color:#000000; text-align:left;\" bgcolor=\"#FFFFFF\" width=\"100%\" align=\"left\"><table class=\"module preheader preheader-hide\" role=\"module\" data-type=\"preheader\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"display: none !important; mso-hide: all; visibility: hidden; opacity: 0; color: transparent; height: 0; width: 0;\">\n    <tr>\n      <td role=\"module-content\">\n        <p></p>\n      </td>\n    </tr>\n  </table><table class=\"module\" role=\"module\" data-type=\"text\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"table-layout: fixed;\" data-muid=\"41f90842-501c-4f08-96c9-17c0f74cb841\" data-mc-module-version=\"2019-10-22\">\n    <tbody>\n      <tr>\n        <td style=\"padding:18px 0px 18px 0px; line-height:22px; text-align:inherit;\" height=\"100%\" valign=\"top\" bgcolor=\"\" role=\"module-content\"><div><div style=\"font-family: inherit; text-align: inherit\">Ahoy, World!</div><div></div></div></td>\n      </tr>\n    </tbody>\n  </table><div data-role=\"module-unsubscribe\" class=\"module\" role=\"module\" data-type=\"unsubscribe\" style=\"color:#444444; font-size:12px; line-height:20px; padding:16px 16px 16px 16px; text-align:Center;\" data-muid=\"4e838cf3-9892-4a6d-94d6-170e474d21e5\"><div class=\"Unsubscribe--addressLine\"><p class=\"Unsubscribe--senderName\" style=\"font-size:12px; line-height:20px;\">{{Sender_Name}}</p><p style=\"font-size:12px; line-height:20px;\"><span class=\"Unsubscribe--senderAddress\">{{Sender_Address}}</span>, <span class=\"Unsubscribe--senderCity\">{{Sender_City}}</span>, <span class=\"Unsubscribe--senderState\">{{Sender_State}}</span> <span class=\"Unsubscribe--senderZip\">{{Sender_Zip}}</span></p></div><p style=\"font-size:12px; line-height:20px;\"><a class=\"Unsubscribe--unsubscribeLink\" href=\"{{{unsubscribe}}}\" target=\"_blank\" style=\"\">Unsubscribe</a> - <a href=\"{{{unsubscribe_preferences}}}\" target=\"_blank\" class=\"Unsubscribe--unsubscribePreferences\" style=\"\">Unsubscribe Preferences</a></p></div></td>\n                                      </tr>\n                                    </table>\n                                    <!--[if mso]>\n                                  </td>\n                                </tr>\n                              </table>\n                            </center>\n                            <![endif]-->\n                          </td>\n                        </tr>\n                      </table>\n                    </td>\n                  </tr>\n                </table>\n              </td>\n            </tr>\n          </table>\n        </div>\n      </center>\n    </body>\n  </html>",
    "generate_plain_content": false
  },
  "properties": {
    "name": {
      "type": "string",
      "default": "My Design",
      "maxLength": 100,
      "description": "Name of the Design."
    },
    "subject": {
      "type": "string",
      "maxLength": 5000,
      "description": "Subject of the Design."
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 255
      },
      "maxItems": 10,
      "description": "The list of categories applied to the design",
      "uniqueItems": true
    },
    "html_content": {
      "type": "string",
      "maxLength": 1048576,
      "description": "The HTML content of the Design."
    },
    "plain_content": {
      "type": "string",
      "default": "<generated from html_content if left empty>",
      "maxLength": 1048576,
      "description": "Plain text content of the Design."
    },
    "generate_plain_content": {
      "type": "boolean",
      "default": true,
      "description": "If true, plain_content is always generated from html_content. If false, plain_content is not altered."
    }
  }
}
object DomainAuthenticationAddIpToDomainRequest
{
  "type": "object",
  "example": {
    "ip": "192.168.0.1"
  },
  "required": [
    "ip"
  ],
  "properties": {
    "ip": {
      "type": "string",
      "description": "IP to associate with the domain. Used for manually specifying IPs for custom SPF."
    }
  }
}
object DomainAuthenticationAssociateSubuserWithDomainRequest
{
  "type": "object",
  "example": {
    "username": "jdoe"
  },
  "required": [
    "username"
  ],
  "properties": {
    "username": {
      "type": "string",
      "description": "Username to associate with the authenticated domain."
    }
  }
}
object DomainAuthenticationDeleteAuthenticatedDomainResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object DomainAuthenticationDisassociateDomainFromSubuserResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object DomainAuthenticationPostAuthenticateDomainRequest
{
  "type": "object",
  "example": {
    "ips": [
      "192.168.1.1",
      "192.168.1.2"
    ],
    "domain": "example.com",
    "default": true,
    "username": "john@example.com",
    "subdomain": "news",
    "custom_spf": true,
    "automatic_security": false
  },
  "required": [
    "domain"
  ],
  "properties": {
    "ips": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The IP addresses that will be included in the custom SPF record for this authenticated domain."
    },
    "domain": {
      "type": "string",
      "description": "Domain being authenticated."
    },
    "default": {
      "type": "boolean",
      "description": "Whether to use this authenticated domain as the fallback if no authenticated domains match the sender's domain."
    },
    "username": {
      "type": "string",
      "description": "The username associated with this domain."
    },
    "subdomain": {
      "type": "string",
      "description": "The subdomain to use for this authenticated domain."
    },
    "custom_spf": {
      "type": "boolean",
      "description": "Specify whether to use a custom SPF or allow SendGrid to manage your SPF. This option is only available to authenticated domains set up for manual security."
    },
    "automatic_security": {
      "type": "boolean",
      "description": "Whether to allow SendGrid to manage your SPF records, DKIM keys, and DKIM key rotation."
    },
    "custom_dkim_selector": {
      "type": "string",
      "description": "Add a custom DKIM selector. Accepts three letters or numbers."
    }
  }
}
object DomainAuthenticationUpdateDomainSettingsRequest
{
  "type": "object",
  "example": {
    "default": false,
    "custom_spf": true
  },
  "properties": {
    "default": {
      "type": "boolean",
      "default": false,
      "description": "Indicates whether this is the default authenticated domain."
    },
    "custom_spf": {
      "type": "boolean",
      "default": false,
      "description": "Indicates whether to generate a custom SPF record for manual security."
    }
  }
}
object DomainAuthenticationValidateDomain500Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string",
            "description": "A message explaining the reason for the error."
          }
        }
      }
    }
  }
}
object DomainAuthenticationValidateDomainResponse
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "The ID of the authenticated domain."
    },
    "valid": {
      "type": "boolean",
      "description": "Indicates if this is a valid authenticated domain."
    },
    "validation_results": {
      "type": "object",
      "properties": {
        "spf": {
          "type": "object",
          "properties": {
            "valid": {
              "type": "boolean",
              "description": "Indicates if the SPF record is valid."
            },
            "reason": {
              "type": "string",
              "nullable": true
            }
          },
          "description": "The SPF record for the authenticated domain."
        },
        "dkim1": {
          "type": "object",
          "properties": {
            "valid": {
              "type": "boolean",
              "description": "Indicates if the DNS record is valid."
            },
            "reason": {
              "type": "string",
              "nullable": true
            }
          },
          "description": "A DNS record for this authenticated domain."
        },
        "dkim2": {
          "type": "object",
          "properties": {
            "valid": {
              "type": "boolean",
              "description": "Indicates if the DNS record is valid."
            },
            "reason": {
              "type": "string",
              "nullable": true
            }
          },
          "description": "A DNS record for this authenticated domain."
        },
        "mail_cname": {
          "type": "object",
          "properties": {
            "valid": {
              "type": "boolean",
              "description": "Indicates if this DNS record is valid."
            },
            "reason": {
              "type": "string",
              "nullable": true,
              "description": "The reason this record is invalid."
            }
          },
          "description": "The CNAME record for the authenticated domain."
        }
      },
      "description": "The individual DNS records that are checked when validating, including the reason for any invalid DNS records."
    }
  }
}
object EmailAddressValidationCheckValidityRequest
{
  "type": "object",
  "example": {
    "email": "example@example.com",
    "source": "signup"
  },
  "required": [
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "description": "The email address that you want to validate."
    },
    "source": {
      "type": "string",
      "description": "A one-word classifier for where this validation originated."
    }
  }
}
object EmailAddressValidationCheckValidityResponse
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "object",
      "required": [
        "email",
        "verdict",
        "score",
        "local",
        "host",
        "checks",
        "ip_address"
      ],
      "properties": {
        "host": {
          "type": "string",
          "format": "hostname",
          "description": "The domain of the email address."
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "The email being validated"
        },
        "local": {
          "type": "string",
          "description": "The local part of the email address."
        },
        "score": {
          "type": "number",
          "description": "A numeric representation of the email validity."
        },
        "checks": {
          "type": "object",
          "required": [
            "domain",
            "local_part",
            "additional"
          ],
          "properties": {
            "domain": {
              "type": "object",
              "required": [
                "has_valid_address_syntax",
                "has_mx_or_a_record",
                "is_suspected_disposable_address"
              ],
              "properties": {
                "has_mx_or_a_record": {
                  "type": "boolean",
                  "description": "Whether the email has appropriate DNS records to deliver a message. "
                },
                "has_valid_address_syntax": {
                  "type": "boolean",
                  "description": "Whether the email address syntax is valid."
                },
                "is_suspected_disposable_address": {
                  "type": "boolean",
                  "description": "Whether the domain appears to be from a disposable email address service."
                }
              },
              "description": "Checks on the domain portion of the email address."
            },
            "additional": {
              "type": "object",
              "required": [
                "has_known_bounces",
                "has_suspected_bounces"
              ],
              "properties": {
                "has_known_bounces": {
                  "type": "boolean",
                  "description": "WHether email sent to this address from your account has bounced."
                },
                "has_suspected_bounces": {
                  "type": "boolean",
                  "description": "Whether our model predicts that the email address might bounce."
                }
              },
              "description": "Additional checks on the email address."
            },
            "local_part": {
              "type": "object",
              "required": [
                "is_suspected_role_address"
              ],
              "properties": {
                "is_suspected_role_address": {
                  "type": "boolean",
                  "description": "Whether the local part of email appears to be a role or group (e.g., hr, admin)"
                }
              },
              "description": "Checks on the local part of the email address."
            }
          },
          "description": "Granular checks for email address validity."
        },
        "source": {
          "type": "string",
          "description": "The source of the validation, as per the API request."
        },
        "verdict": {
          "enum": [
            "Valid",
            "Risky",
            "Invalid"
          ],
          "type": "string",
          "description": "A generic classification of whether or not the email address is valid."
        },
        "ip_address": {
          "type": "string",
          "description": "The IP address associated with this email."
        },
        "suggestion": {
          "type": "string",
          "description": "A suggested correction in the event of domain name typos (e.g., gmial.com)"
        }
      }
    }
  }
}
object EmailCnameRecordsSendDnsEmailRequest
{
  "type": "object",
  "example": {
    "email": "my_colleague@example.com",
    "link_id": 29719392,
    "message": "DNS Record for verification",
    "domain_id": 46873408
  },
  "required": [
    "link_id",
    "domain_id",
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "description": "The email address to send the DNS information to."
    },
    "link_id": {
      "type": "integer",
      "x-desc": "The ID of the branded link.",
      "minimum": 0
    },
    "message": {
      "type": "string",
      "default": "Please set these DNS records in our hosting solution.",
      "description": "A custom text block to include in the email body sent with the records."
    },
    "domain_id": {
      "type": "integer",
      "minimum": 0,
      "description": "The ID of your SendGrid domain record."
    }
  }
}
object EmailCnameRecordsSendDnsEmailResponse
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "error": {
          "type": "string"
        },
        "field": {
          "type": "string"
        }
      }
    }
  }
}
array GetAlertsResponse
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "created_at",
      "email_to",
      "id",
      "type"
    ],
    "properties": {
      "id": {
        "type": "integer",
        "description": "The ID of the alert."
      },
      "type": {
        "enum": [
          "usage_limit",
          "stats_notification"
        ],
        "type": "string",
        "description": "The type of alert."
      },
      "email_to": {
        "type": "string",
        "description": "The email address that the alert will be sent to."
      },
      "frequency": {
        "type": "string",
        "description": "If the alert is of type stats_notification, this indicates how frequently the stats notifications will be sent. For example, \"daily\", \"weekly\", or \"monthly\"."
      },
      "created_at": {
        "type": "integer",
        "description": "A Unix timestamp indicating when the alert was created."
      },
      "percentage": {
        "type": "integer",
        "description": "If the alert is of type usage_limit, this indicates the percentage of email usage that must be reached before the alert will be sent."
      },
      "updated_at": {
        "type": "integer",
        "description": "A Unix timestamp indicating when the alert was last modified."
      }
    }
  },
  "description": "The list of alerts."
}
object GetCampaignsResponse
{
  "type": "object",
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/campaign_response"
      }
    }
  }
}
object GetCategories400Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "field",
          "message"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "A message explaining why your categories could not be retrieved."
          }
        }
      },
      "description": "The error returned."
    }
  }
}
array GetCategoriesResponse
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "category"
    ],
    "properties": {
      "category": {
        "type": "string",
        "description": "A category used to group emails by broad topic."
      }
    }
  }
}
array GetIpsResponse
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "ip",
      "subusers",
      "pools",
      "warmup",
      "start_date",
      "whitelabeled",
      "assigned_at"
    ],
    "properties": {
      "ip": {
        "type": "string",
        "description": "An IP address."
      },
      "rdns": {
        "type": "string",
        "description": "The reverse DNS record for this IP address."
      },
      "pools": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "The IP pools that this IP has been added to."
      },
      "warmup": {
        "type": "boolean",
        "description": "Indicates if this IP address is currently warming up."
      },
      "subusers": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "The subusers that are able to send email from this IP."
      },
      "start_date": {
        "type": "number",
        "nullable": true,
        "description": "The date that the IP address was entered into warmup."
      },
      "assigned_at": {
        "type": "integer",
        "nullable": true,
        "description": "The date that the IP address was assigned to the user."
      },
      "whitelabeled": {
        "type": "boolean",
        "description": "Indicates if this IP address is associated with a reverse DNS record."
      }
    }
  }
}
Load more schemas