string ListsDeleteList204Response
{
  "type": "string",
  "description": "The delete has been processed. "
}
object ListsDeleteList404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  }
}
object ListsDeleteListResponse
{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "job_id of the async job"
    }
  },
  "description": "The delete has been accepted and is processing."
}
object ListsGetAllResponse
{
  "type": "object",
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/list"
      }
    },
    "_metadata": {
      "$ref": "#/components/schemas/metadata"
    }
  }
}
array ListsGetListById404Response
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/error"
  }
}
object ListsGetListByIdResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/list"
    },
    {
      "type": "object",
      "properties": {
        "contact_sample": {
          "$ref": "#/components/schemas/contact-details2"
        }
      }
    }
  ]
}
object ListsRemoveContactsFromList404Response
{
  "type": "object",
  "example": {},
  "properties": {}
}
object ListsRemoveContactsFromListResponse
{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "job_id of the async job"
    }
  },
  "description": "The removal is accepted and processing."
}
object ListsUpdateName404Response
{
  "type": "object",
  "example": {},
  "properties": {}
}
object ListsUpdateNameRequest
{
  "type": "object",
  "example": {
    "name": "updated-list-name"
  },
  "properties": {
    "name": {
      "type": "string",
      "description": "Your name for your list."
    }
  }
}
object ListsUpdateNameResponse
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/error"
      }
    }
  }
}
object MailSendV3EmailSendRequest
{
  "type": "object",
  "example": {
    "asm": {
      "group_id": 12345,
      "groups_to_display": [
        12345
      ]
    },
    "from": {
      "name": "Example Order Confirmation",
      "email": "orders@example.com"
    },
    "content": [
      {
        "type": "text/html",
        "value": "<p>Hello from Twilio SendGrid!</p><p>Sending with the email service trusted by developers and marketers for <strong>time-savings</strong>, <strong>scalability</strong>, and <strong>delivery expertise</strong>.</p><p>%open-track%</p>"
      }
    ],
    "send_at": 1617260400,
    "subject": "Your Example Order Confirmation",
    "batch_id": "AsdFgHjklQweRTYuIopzXcVBNm0aSDfGHjklmZcVbNMqWert1znmOP2asDFjkl",
    "reply_to": {
      "name": "Example Customer Service Team",
      "email": "customer_service@example.com"
    },
    "categories": [
      "cake",
      "pie",
      "baking"
    ],
    "attachments": [
      {
        "type": "text/html",
        "content": "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAgICAgPHRpdGxlPkRvY3VtZW50PC90aXRsZT4KICAgIDwvaGVhZD4KCiAgICA8Ym9keT4KCiAgICA8L2JvZHk+Cgo8L2h0bWw+Cg==",
        "filename": "index.html",
        "disposition": "attachment"
      }
    ],
    "ip_pool_name": "transactional email",
    "mail_settings": {
      "footer": {
        "enable": false
      },
      "sandbox_mode": {
        "enable": false
      },
      "bypass_list_management": {
        "enable": false
      }
    },
    "personalizations": [
      {
        "cc": [
          {
            "name": "Jane Doe",
            "email": "jane_doe@example.com"
          }
        ],
        "to": [
          {
            "name": "John Doe",
            "email": "john_doe@example.com"
          },
          {
            "name": "Julia Doe",
            "email": "julia_doe@example.com"
          }
        ],
        "bcc": [
          {
            "name": "Jim Doe",
            "email": "james_doe@example.com"
          }
        ]
      },
      {
        "to": [
          {
            "name": "Janice Doe",
            "email": "janice_doe@example.com"
          }
        ],
        "bcc": [
          {
            "name": "Jordan Doe",
            "email": "jordan_doe@example.com"
          }
        ],
        "from": {
          "name": "Example Sales Team",
          "email": "sales@example.com"
        }
      }
    ],
    "tracking_settings": {
      "open_tracking": {
        "enable": true,
        "substitution_tag": "%open-track%"
      },
      "click_tracking": {
        "enable": true,
        "enable_text": false
      },
      "subscription_tracking": {
        "enable": false
      }
    }
  },
  "required": [
    "personalizations",
    "from",
    "subject",
    "content"
  ],
  "properties": {
    "asm": {
      "type": "object",
      "required": [
        "group_id"
      ],
      "properties": {
        "group_id": {
          "type": "integer",
          "description": "The unsubscribe group to associate with this email."
        },
        "groups_to_display": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "maxItems": 25,
          "description": "An array containing the unsubscribe groups that you would like to be displayed on the unsubscribe preferences page."
        }
      },
      "description": "An object allowing you to specify how to handle unsubscribes."
    },
    "from": {
      "$ref": "#/components/schemas/from_email_object"
    },
    "content": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "value"
        ],
        "properties": {
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "The MIME type of the content you are including in your email (e.g., `“text/plain”` or `“text/html”`)."
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "description": "The actual content of the specified MIME type that you are including in your email."
          }
        }
      },
      "description": "An array where you can specify the content of your email. You can include multiple [MIME types](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of content, but you must specify at least one MIME type. To include more than one MIME type, add another object to the array containing the `type` and `value` parameters."
    },
    "headers": {
      "type": "object",
      "description": "An object containing key/value pairs of header names and the value to substitute for them. The key/value pairs must be strings. You must ensure these are properly encoded if they contain unicode characters. These headers cannot be one of the reserved headers."
    },
    "send_at": {
      "type": "integer",
      "description": "A unix timestamp allowing you to specify when you want your email to be delivered. This may be overridden by the `send_at` parameter set at the personalizations level. Delivery cannot be scheduled more than 72 hours in advance. If you have the flexibility, it's better to schedule mail for off-peak times. Most emails are scheduled and sent at the top of the hour or half hour. Scheduling email to avoid peak times — for example, scheduling at 10:53 — can result in lower deferral rates due to the reduced traffic during off-peak times."
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "description": "The global or 'message level' subject of your email. This may be overridden by subject lines set in personalizations."
    },
    "batch_id": {
      "type": "string",
      "description": "An ID representing a batch of emails to be sent at the same time. Including a `batch_id` in your request allows you include this email in that batch. It also enables you to cancel or pause the delivery of that batch. For more information, see the [Cancel Scheduled Sends API](https://sendgrid.com/docs/api-reference/)."
    },
    "reply_to": {
      "$ref": "#/components/schemas/reply_to_email_object"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 255
      },
      "maxItems": 10,
      "description": "An array of category names for this message. Each category name may not exceed 255 characters. ",
      "uniqueItems": true
    },
    "attachments": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "content",
          "filename"
        ],
        "properties": {
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "The MIME type of the content you are attaching (e.g., `“text/plain”` or `“text/html”`)."
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "description": "The Base64 encoded content of the attachment."
          },
          "filename": {
            "type": "string",
            "description": "The attachment's filename."
          },
          "content_id": {
            "type": "string",
            "description": "The attachment's content ID. This is used when the disposition is set to `“inline”` and the attachment is an image, allowing the file to be displayed within the body of your email."
          },
          "disposition": {
            "enum": [
              "inline",
              "attachment"
            ],
            "type": "string",
            "default": "attachment",
            "description": "The attachment's content-disposition, specifying how you would like the attachment to be displayed. For example, `“inline”` results in the attached file are displayed automatically within the message while `“attachment”` results in the attached file require some action to be taken before it is displayed, such as opening or downloading the file."
          }
        }
      },
      "description": "An array of objects where you can specify any attachments you want to include."
    },
    "custom_args": {
      "type": "string",
      "description": "Values that are specific to the entire send that will be carried along with the email and its activity data.  Key/value pairs must be strings. Substitutions will not be made on custom arguments, so any string that is entered into this parameter will be assumed to be the custom argument that you would like to be used. This parameter is overridden by `custom_args` set at the personalizations level. Total `custom_args` size may not exceed 10,000 bytes."
    },
    "template_id": {
      "type": "string",
      "description": "An email template ID. A template that contains a subject and content — either text or html — will override any subject and content values specified at the personalizations or message level."
    },
    "ip_pool_name": {
      "type": "string",
      "maxLength": 64,
      "minLength": 2,
      "description": "The IP Pool that you would like to send this email from."
    },
    "mail_settings": {
      "type": "object",
      "properties": {
        "footer": {
          "type": "object",
          "properties": {
            "html": {
              "type": "string",
              "description": "The HTML content of your footer."
            },
            "text": {
              "type": "string",
              "description": "The plain text content of your footer."
            },
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            }
          },
          "description": "The default footer that you would like included on every email."
        },
        "sandbox_mode": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            }
          },
          "description": "Sandbox Mode allows you to send a test email to ensure that your request body is valid and formatted correctly."
        },
        "bypass_list_management": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            }
          },
          "description": "Allows you to bypass all unsubscribe groups and suppressions to ensure that the email is delivered to every single recipient. This should only be used in emergencies when it is absolutely necessary that every recipient receives your email. This filter cannot be combined with any other bypass filters. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters."
        },
        "bypass_spam_management": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            }
          },
          "description": "Allows you to bypass the spam report list to ensure that the email is delivered to recipients. Bounce and unsubscribe lists will still be checked; addresses on these other lists will not receive the message. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters."
        },
        "bypass_bounce_management": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            }
          },
          "description": "Allows you to bypass the bounce list to ensure that the email is delivered to recipients. Spam report and unsubscribe lists will still be checked; addresses on these other lists will not receive the message. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters."
        },
        "bypass_unsubscribe_management": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            }
          },
          "description": "Allows you to bypass the global unsubscribe list to ensure that the email is delivered to recipients. Bounce and spam report lists will still be checked; addresses on these other lists will not receive the message. This filter applies only to global unsubscribes and will not bypass group unsubscribes. This filter cannot be combined with the `bypass_list_management` filter. See our [documentation](https://sendgrid.com/docs/ui/sending-email/index-suppressions/#bypass-suppressions) for more about bypass filters."
        }
      },
      "description": "A collection of different mail settings that you can use to specify how you would like this email to be handled."
    },
    "reply_to_list": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "A name or title associated with the `reply_to_list` email address."
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "The email address where any replies or bounces will be returned."
          }
        }
      },
      "maxItems": 1000,
      "description": "An array of recipients who will receive replies and/or bounces. Each object in this array must contain the recipient's email address. Each object in the array may optionally contain the recipient's name. You can either choose to use “reply_to” field or “reply_to_list” but not both.",
      "uniqueItems": true
    },
    "personalizations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "to"
        ],
        "properties": {
          "cc": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/cc_bcc_email_object"
            },
            "maxItems": 1000,
            "description": "An array of recipients who will receive a copy of your email. Each object in this array must contain the recipient's email address. Each object in the array may optionally contain the recipient's name."
          },
          "to": {
            "$ref": "#/components/schemas/to_email_array"
          },
          "bcc": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/cc_bcc_email_object"
            },
            "maxItems": 1000,
            "description": "An array of recipients who will receive a blind carbon copy of your email. Each object in this array must contain the recipient's email address. Each object in the array may optionally contain the recipient's name."
          },
          "from": {
            "$ref": "#/components/schemas/from_email_object"
          },
          "headers": {
            "type": "object",
            "description": "A collection of JSON key/value pairs allowing you to specify handling instructions for your email. You may not overwrite the following headers: `x-sg-id`, `x-sg-eid`, `received`, `dkim-signature`, `Content-Type`, `Content-Transfer-Encoding`, `To`, `From`, `Subject`, `Reply-To`, `CC`, `BCC`"
          },
          "send_at": {
            "type": "integer",
            "description": "A unix timestamp allowing you to specify when your email should be delivered. Scheduling delivery more than 72 hours in advance is forbidden."
          },
          "subject": {
            "type": "string",
            "minLength": 1,
            "description": "The subject of your email. See character length requirements according to [RFC 2822](http://stackoverflow.com/questions/1592291/what-is-the-email-subject-length-limit#answer-1592310)."
          },
          "custom_args": {
            "type": "object",
            "description": "Values that are specific to this personalization that will be carried along with the email and its activity data. Substitutions will not be made on custom arguments, so any string that is entered into this parameter will be assumed to be the custom argument that you would like to be used. This field may not exceed 10,000 bytes.",
            "maxProperties": 10000
          },
          "substitutions": {
            "type": "object",
            "description": "Substitutions allow you to insert data without using Dynamic Transactional Templates. This field should **not** be used in combination with a Dynamic Transactional Template, which can be identified by a `template_id` starting with `d-`. This field is a collection of key/value pairs following the pattern \"substitution_tag\":\"value to substitute\". The key/value pairs must be strings. These substitutions will apply to the text and html content of the body of your email, in addition to the `subject` and `reply-to` parameters. The total collective size of your substitutions may not exceed 10,000 bytes per personalization object.",
            "maxProperties": 10000
          },
          "dynamic_template_data": {
            "type": "object",
            "description": "Dynamic template data is available using Handlebars syntax in Dynamic Transactional Templates. This field should be used in combination with a Dynamic Transactional Template, which can be identified by a `template_id` starting with `d-`. This field is a collection of key/value pairs following the pattern \"variable_name\":\"value to insert\"."
          }
        }
      },
      "maxItems": 1000,
      "description": "An array of messages and their metadata. Each object within personalizations can be thought of as an envelope - it defines who should receive an individual message and how that message should be handled. See our [Personalizations documentation](https://sendgrid.com/docs/for-developers/sending-email/personalizations/) for examples.",
      "uniqueItems": false
    },
    "tracking_settings": {
      "type": "object",
      "properties": {
        "ganalytics": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            },
            "utm_term": {
              "type": "string",
              "description": "Used to identify any paid keywords."
            },
            "utm_medium": {
              "type": "string",
              "description": "Name of the marketing medium. (e.g. Email)"
            },
            "utm_source": {
              "type": "string",
              "description": "Name of the referrer source. (e.g. Google, SomeDomain.com, or Marketing Email)"
            },
            "utm_content": {
              "type": "string",
              "description": "Used to differentiate your campaign from advertisements."
            },
            "utm_campaign": {
              "type": "string",
              "description": "The name of the campaign."
            }
          },
          "description": "Allows you to enable tracking provided by Google Analytics."
        },
        "open_tracking": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            },
            "substitution_tag": {
              "type": "string",
              "description": "Allows you to specify a substitution tag that you can insert in the body of your email at a location that you desire. This tag will be replaced by the open tracking pixel."
            }
          },
          "description": "Allows you to track if the email was opened by including a single pixel image in the body of the content. When the pixel is loaded, Twilio SendGrid can log that the email was opened."
        },
        "click_tracking": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            },
            "enable_text": {
              "type": "boolean",
              "description": "Indicates if this setting should be included in the `text/plain` portion of your email."
            }
          },
          "description": "Allows you to track if a recipient clicked a link in your email."
        },
        "subscription_tracking": {
          "type": "object",
          "properties": {
            "html": {
              "type": "string",
              "description": "HTML to be appended to the email with the subscription tracking link. You may control where the link is by using the tag <% %>"
            },
            "text": {
              "type": "string",
              "description": "Text to be appended to the email with the subscription tracking link. You may control where the link is by using the tag <% %>"
            },
            "enable": {
              "type": "boolean",
              "description": "Indicates if this setting is enabled."
            },
            "substitution_tag": {
              "type": "string",
              "description": "A tag that will be replaced with the unsubscribe URL. for example: `[unsubscribe_url]`. If this parameter is used, it will override both the `text` and `html` parameters. The URL of the link will be placed at the substitution tag’s location with no additional formatting."
            }
          },
          "description": "Allows you to insert a subscription management link at the bottom of the text and HTML bodies of your email. If you would like to specify the location of the link within your email, you may use the `substitution_tag`."
        }
      },
      "description": "Settings to determine how you would like to track the metrics of how your recipients interact with your email."
    }
  }
}
string MarketingCampaignsStatsExportAutomationStatsResponse
{
  "type": "string",
  "description": "CSV data"
}
string MarketingCampaignsStatsExportSingleSendStatsResponse
{
  "type": "string",
  "description": "CSV data"
}
object MarketingCampaignsStatsGetSingleSendLinkStatByIdResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object PostAlerts400Response
{
  "type": "object",
  "properties": {
    "field": {
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  }
}
object PostAlertsRequest
{
  "type": "object",
  "example": {
    "type": "stats_notification",
    "email_to": "example@example.com",
    "frequency": "daily"
  },
  "required": [
    "type",
    "email_to"
  ],
  "properties": {
    "type": {
      "enum": [
        "stats_notification",
        "usage_limit"
      ],
      "type": "string",
      "description": "The type of alert you want to create. Can be either usage_limit or stats_notification.\nExample: usage_limit"
    },
    "email_to": {
      "type": "string",
      "format": "email",
      "nullable": true,
      "description": "The email address the alert will be sent to.\nExample: test@example.com"
    },
    "frequency": {
      "type": "string",
      "description": "Required for stats_notification. How frequently the alert will be sent.\nExample: daily"
    },
    "percentage": {
      "type": "integer",
      "description": "Required for usage_alert. When this usage threshold is reached, the alert will be sent.\nExample: 90"
    }
  }
}
object PostAlertsResponse
{
  "type": "object",
  "required": [
    "created_at",
    "email_to",
    "id",
    "type",
    "updated_at"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "The ID of the alert."
    },
    "type": {
      "type": "string",
      "description": "The type of alert."
    },
    "email_to": {
      "type": "string",
      "format": "email",
      "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."
    }
  }
}
object PostCampaignsResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object PostIpsRequest
{
  "type": "object",
  "example": {
    "count": 90323478,
    "warmup": true,
    "subusers": [
      "subuser1",
      "subuser2"
    ],
    "user_can_send": true
  },
  "required": [
    "count"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "description": "The amount of IPs to add to the account."
    },
    "warmup": {
      "type": "boolean",
      "default": false,
      "description": "Whether or not to warmup the IPs being added."
    },
    "subusers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Array of usernames to be assigned a send IP."
    }
  }
}
object PostIpsResponse
{
  "type": "object",
  "required": [
    "ips",
    "remaining_ips",
    "warmup"
  ],
  "properties": {
    "ips": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "ip",
          "subusers"
        ],
        "properties": {
          "ip": {
            "type": "string",
            "description": "IP added to account."
          },
          "subusers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of usernames assigned a send IP."
          }
        }
      },
      "description": "List of IP objects."
    },
    "warmup": {
      "type": "boolean",
      "description": "Whether or not the IPs are being warmed up."
    },
    "remaining_ips": {
      "type": "integer",
      "description": "The number of IPs that can still be added to the user."
    }
  }
}
object PostSendersRequest
{
  "allOf": [
    {
      "$ref": "#/components/schemas/sender-id-request"
    },
    {
      "type": "object",
      "required": [
        "nickname",
        "address",
        "city",
        "country"
      ],
      "properties": {
        "from": {
          "type": "object",
          "required": [
            "email"
          ]
        },
        "reply_to": {
          "type": "object",
          "required": [
            "email"
          ]
        }
      }
    }
  ],
  "example": {
    "zip": "80202",
    "city": "Denver",
    "from": {
      "name": "Example INC",
      "email": "from@example.com"
    },
    "state": "Colorado",
    "address": "123 Elm St.",
    "country": "United States",
    "nickname": "My Sender ID",
    "reply_to": {
      "name": "Example INC",
      "email": "replyto@example.com"
    },
    "address_2": "Apt. 456"
  }
}
object PostSendersResponse
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object PostSubusersRequest
{
  "type": "object",
  "example": {
    "ips": [
      "1.1.1.1",
      "2.2.2.2"
    ],
    "email": "John@example.com",
    "password": "johns_password",
    "username": "John@example.com"
  },
  "required": [
    "username",
    "email",
    "password",
    "ips"
  ],
  "properties": {
    "ips": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "ipv4"
      },
      "description": "The IP addresses that should be assigned to this subuser."
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "The email address of the subuser."
    },
    "password": {
      "type": "string",
      "description": "The password this subuser will use when logging into SendGrid."
    },
    "username": {
      "type": "string",
      "description": "The username for this subuser."
    }
  }
}
object PostSubusersResponse
{
  "type": "object",
  "example": {
    "errors": [
      {
        "message": "unable to validate IPs at this time"
      }
    ]
  },
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "unable to validate IPs at this time"
          }
        }
      }
    }
  }
}
object PostTemplatesRequest
{
  "type": "object",
  "example": {
    "name": "example_name",
    "generation": "dynamic"
  },
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 100,
      "description": "The name for the new transactional template."
    },
    "generation": {
      "enum": [
        "legacy",
        "dynamic"
      ],
      "type": "string",
      "default": "legacy",
      "description": "Defines whether the template supports dynamic replacement."
    }
  }
}
object QueryFilterMessages400Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object QueryFilterMessages429Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object QueryFilterMessagesResponse
{
  "type": "object",
  "properties": {
    "messages": {
      "type": "array",
      "items": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/email-activity-response-common-fields"
          },
          {
            "type": "object",
            "properties": {
              "opens_count": {
                "type": "integer",
                "description": "The number of times the message was opened."
              },
              "clicks_count": {
                "type": "integer",
                "description": "The number of times links in the message were clicked."
              },
              "last_event_time": {
                "type": "integer",
                "description": "A timestamp of the last event received for the specific message."
              }
            }
          }
        ],
        "title": "Abbv. Message",
        "example": {
          "msg_id": "abc123",
          "status": "processed",
          "subject": "anim Duis sint veniam",
          "to_email": "test@test.com",
          "from_email": "from@test.com",
          "opens_count": 1,
          "clicks_count": 2,
          "last_event_time": "2017-10-13T18:56:21.000Z"
        },
        "required": [
          "from_email",
          "msg_id",
          "subject",
          "to_email",
          "status",
          "opens_count",
          "clicks_count",
          "last_event_time"
        ],
        "properties": {
          "msg_id": {
            "type": "string"
          },
          "status": {
            "enum": [
              "processed",
              "delivered",
              "not_delivered"
            ],
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "to_email": {
            "type": "string"
          },
          "from_email": {
            "type": "string"
          },
          "opens_count": {
            "type": "integer"
          },
          "clicks_count": {
            "type": "integer"
          },
          "last_event_time": {
            "type": "string",
            "description": "iso 8601 format"
          }
        }
      }
    }
  }
}
object QueryMessageDetails400Response
{
  "type": "object",
  "example": {},
  "properties": {}
}
object QueryMessageDetails404Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object QueryMessageDetails429Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object QueryMessageDetailsResponse
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/email-activity-response-common-fields"
    },
    {
      "type": "object",
      "example": {
        "events": [
          {
            "processed": 1492453589,
            "event_name": "bounced",
            "server_response": "some error message"
          }
        ],
        "msg_id": "in aliquip id aliqua",
        "status": "not delivered",
        "subject": "est incididunt adipisicing pariatur",
        "teammate": "",
        "to_email": "send@test.com",
        "api_key_id": "sdfsdfsdf123",
        "categories": [
          "hi",
          "bye"
        ],
        "from_email": "jane_doe@example.com",
        "outbound_ip": "1.2.3.4",
        "template_id": "123e4567-e89b-12d3-a456-426655440000",
        "unique_args": "{'key': 'value'}",
        "asm_group_id": 11376349,
        "originating_ip": "2.3.4.5",
        "outbound_ip_type": "dedicated"
      },
      "required": [
        "template_id",
        "asm_group_id",
        "teammate",
        "api_key_id",
        "events",
        "originating_ip",
        "categories",
        "unique_args",
        "outbound_ip",
        "outbound_ip_type"
      ],
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "type": "object",
            "title": "Event",
            "example": {
              "url": "http://3LX,MU}N=B8'd,K}>bEma{l~!ad%peIF}y>qHfLPWQ$l9b\\!6.1H?$Z9H\"il-_gZD>/JPYsGqH4x4_3v090TCtnFalXGFiAdooDxgrDAYNXShUywSxwYr8gKeyc/4sal4VJ3IxEWsG74V5MYQ0mz27jhy7n5DHsUtApQ6zXHS13uO5vYBlJHpJRfuT6/F5nIpkHre2w3eTtN7M6pg9V5stjnnsavKkzQxyTv15CMSDLFwR_BTZwofhWpyBU7B9ypYL79vT97N3LDZyoaM/fNsOLPIqfGBer_Mx9_StergbQYANyOmOSjR6pZof01ky/ZcNDhpu3CkSl4MTtQ3NMCX780pOKQ5SYIPigyvz9IC9WtrCNcOkTxdOPdY0_4MJU4EuTTPmGvO/14KaJCDjIjgrbIqpzuUEL5mET0t2VeVlwvtnOnlHaBE8sic20ze2E0Xt3ETqXyzVJRjLDKh/LWkW8OVp_xkLBCCW7LQngRukKcOiWjMXeCEhYI9HoZ0RsMEWZC8KzRaHc4OI0uXPD4M9pav1LGrI/_0t_RnBnfnqGKsBJr0kdQi/Y6QN_aeawIqX5hDNIU3MF/wWKVWLS0ZFbDfK6KVv5oAid83EpwKoazAMA8MTfEXvHQLO7k7XYWX1Il3eGXL6/wCA96I1SOabzJkZHo2HsFpIC/VBk52Lnpp0xtDH/OCdlQ5e4PpxXQeklp70LPOndr7QKSYEQNUc48n36ixvTjhgpgO8wHsFFYqGcuBMHg9oaCARppQomiQDWYuVPVDynJHdsM1_gWl4/NSs8Y9PL7DrQXOu0UiFRRE0TUsvgqyUgJzlGjUnRziyYeROO75D0K_3aTtbGbCmhaxecos40a1w0PDCNkFp1W/iHwY7922drhsoM6ShwqqwGpAh5HLuU6Q5gqyckeai6YN7HCh9DdHPhhJcatgtMHZDKfQUBVt9ecUlDgiCFF_OnRX/GpzttcsL8E2FoXL9_eAWvSqjodROqx7MZCA/ORdnR/IssPCYP1kTHTIL5mZxv4UGEpyNjUzt4GdSJJTm0nztltWDYX8_Ezl2JvpLVnGVTJxobb4yQIJhe3n64khbOFyFLKHWEniIolm/AxpZQYmseWlVqrIz3YXU59XaSbTTrdCHNhvwF1ogXiiggN6TZ2B3QY_mBEtAp/SD0ONPVqEUkTNAFWTgnnlv6ZIMdMbTw5uZwtFRlB7qDvQouml9kujGmRu6k7zZMTOwWowRNtpboLUcL2NzkVgK6N1Zi2vq/Nt4NJvM5_l1dpIIbwJv_CIcZQZOqPtRWULa2iVxfmJJQaqgLQPwSHQH1zuRJMhraEsPjqVQRC0pZpSt/24VBDN8y31Ye/y_ekWxMdZCvr978C/WrdcTi29kxjJLyT9BII7BsgT5vLuI2l7ntqRAhAUWMs/h9JR0i8RbX5OfB46q41/TfmSdgi97bCR2HfgflyypXwKhRfKYU2MVpu2Dd90WQUlm7hZV8dSfGusuMj/nPMpRVWcbnvlAdsehJCPbLv6n4qdLSPeoMBo32acAGgu1BwBG8JsBgbH43yYi5X7UdGRWKqm_ZbqaDEKH3ncU/uA8EOJb41VfGho4LUeOi1IeYwVAhFEyO6YbteYZecEubrNFZrWWjZUqhzouzY95TeWU8E4StCXVPKlYPiFiwUSX20kG0lVtDbAy/7u4f4x0cYlFOvI1UN1qoOExmNxnxzQQFeM5exWfW2JrRXq5e0UdAJr4q2o9Y_0WaGfhL/nP6Ei06YajDKr11dK5H0LX/9CGTC37HFZeopyopzP_7fvGFkqIRoGTS48pLaIFz3gwpQNlWXUFCsd/PnRlsqJ3SBQSgp_AQe2cP6iBNy2bJI8lkxwY5YVDDdjxusuCcafdjfs2aUa/4tr_iMnNBnd27GxjQI28_JGJlfbOaajVJOxuPMT4ELpYCfPiFjdSbJyE0/gCwtj0rgDKSLWJnOPJ5TAJ935gCqeIsBhOhfcZX413GdilBZRRYEjCVKfOuWzHZ3GW/8yjyk5e_WMNv5F6xggl07w90DBwpx/Q/iWfncqMuSfoeFeqHQkDL9F5W19j1cGuAcyfIYMAXztHXpgTKh9vZcsLYC7LcgKr4FQj3JjEvtnDG2PjcMjGF/MnbCRCz22Ho410_vE9M1Hpq0wdk_i5DbZKNoSwlPgey9URkpuX146TcDdsx_VWDenCepY5HwMr9CPOY9hzUs/c5AWeUMXk/gvsI81Jkv5rHpEnNBUZXYzfqkwQfffhmrc/StLCtzRRlja8dpsEWdkzoKR9Kdxq1qAs5f0sdrGjVRLTT_s1Q2P59zhA/QmS4bubi64cYot3gSIgdNnkjA2GjCp1ETVa548_U9B6boTKDVmaKJlVIDvqL84RC3WI7Er/8opi2lZ48W83Ur47BRh38oOnI0agrCyZz8bp1w_gfVRlSO8PS0i/l_/qxq5xpLbhPkdxVoyZVsNAZchfnmkIHyIk5IK6EUDXdMR21y6OvKW50ZbooAtk9ymynBj4dAYMsd25RV7FE1I1vRTsiDw52/.E5WC0Ymo2zn.qelSbhzr-4laArYiWP.dwJB6qm_6rs0Rm5UXYaYtUNbh76_jJp_X1xQUCDSgbr2KOkDU0\"Q/-4dV\"Yk3QGg[(O86=Pf\"e17K4'r{)kicofHSXcMmP@>VF^`~4j4F*L/1]tD+Lw!WI!@]*OZm6C`M$u96}*O<U;_cZ84k.|nIqpAaeiroItOenDBL",
              "reason": "some reason",
              "mx_server": "quis proident",
              "processed": "2017-10-13T18:56:21.000Z",
              "event_name": "bounced",
              "bounce_type": "blocked",
              "http_user_agent": "in tempor ex dolore est"
            },
            "required": [
              "event_name",
              "processed",
              "bounce_type",
              "http_user_agent",
              "mx_server"
            ],
            "properties": {
              "url": {
                "type": "string",
                "pattern": "^((http[s]?|ftp):\\/)?\\/?([^:\\/\\s]+)((\\/\\w+)*\\/)([\\w\\-\\.]+[^#?\\s]+)(.*)?(#[\\w\\-]+)?$",
                "description": "Used with \"clicked\" event to indicate which url the user clicked."
              },
              "reason": {
                "type": "string",
                "maxLength": 1024,
                "description": "Explanation of what caused the message to be \"bounced\", \"deferred\", or \"blocked\". Usually contains error message from the server - e.g. message from gmail why mail was deferred."
              },
              "mx_server": {
                "type": "string",
                "description": "The MX server that received the email. For example, mx.gmail.com"
              },
              "processed": {
                "type": "string",
                "description": "The date when the event was processed"
              },
              "event_name": {
                "enum": [
                  "bounced",
                  "opened",
                  "clicked",
                  "processed",
                  "dropped",
                  "delivered",
                  "deferred",
                  "spam_report",
                  "unsubscribe",
                  "group_unsubscribe",
                  "group_resubscribe"
                ],
                "type": "string",
                "description": "Name of event"
              },
              "attempt_num": {
                "type": "integer",
                "maximum": 10,
                "minimum": 1,
                "description": "Used with \"deferred\" events to indicate the attempt number out of 10. One \"deferred\" entry will exists under events array for each time a message was deferred with error message from the server. "
              },
              "bounce_type": {
                "enum": [
                  "soft",
                  "hard"
                ],
                "type": "string",
                "description": "Use to distinguish between types of bounces"
              },
              "http_user_agent": {
                "type": "string",
                "description": "Client recipient used to click or open message"
              }
            }
          },
          "description": "List of events related to email message"
        },
        "teammate": {
          "type": "string",
          "pattern": "^$|^[A-Za-z0-9]+",
          "maxLength": 64,
          "minLength": 0,
          "description": "Teammate's username"
        },
        "api_key_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9]+",
          "maxLength": 50,
          "minLength": 3,
          "description": "The ID of the API Key used to authenticate the sending request for the message."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Categories users associated to the message"
        },
        "outbound_ip": {
          "type": "string",
          "format": "ipv4",
          "description": "IP used to send to the remote Mail Transfer Agent."
        },
        "template_id": {
          "type": "string",
          "description": "The ID associated with a Twilio SendGrid email template used to format the message."
        },
        "unique_args": {
          "type": "string",
          "default": "Null",
          "description": "JSON hash of key-value pairs associated with the message."
        },
        "asm_group_id": {
          "type": "integer",
          "minimum": 1,
          "description": "The unsubscribe group associated with this email."
        },
        "originating_ip": {
          "type": "string",
          "format": "ipv4",
          "description": "This is the IP of the user who sent the message."
        },
        "outbound_ip_type": {
          "enum": [
            "dedicated",
            "shared"
          ],
          "type": "string",
          "description": "Whether or not the outbound IP is dedicated vs shared"
        }
      }
    }
  ],
  "title": "Message",
  "example": {
    "events": [
      {
        "processed": 1492453589,
        "event_name": "bounced",
        "server_response": "some error message"
      }
    ],
    "msg_id": "in aliquip id aliqua",
    "status": "not delivered",
    "subject": "est incididunt adipisicing pariatur",
    "teammate": "",
    "to_email": "send@test.com",
    "api_key_id": "sdfsdfsdf123",
    "categories": [
      "hi",
      "bye"
    ],
    "from_email": "test@test.com",
    "outbound_ip": "1.2.3.4",
    "template_id": "123e4567-e89b-12d3-a456-426655440000",
    "unique_args": "{'key': 'value'}",
    "asm_group_id": 11376349,
    "originating_ip": "2.3.4.5",
    "outbound_ip_type": "dedicated"
  },
  "required": [
    "from_email",
    "msg_id",
    "subject",
    "to_email",
    "status",
    "template_id",
    "asm_group_id",
    "teammate",
    "api_key_id",
    "events",
    "originating_ip",
    "categories",
    "unique_args",
    "outbound_ip",
    "outbound_ip_type"
  ],
  "properties": {
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "title": "Event",
        "example": {
          "url": "http://3LX,MU}N=B8'd,K}>bEma{l~!ad%peIF}y>qHfLPWQ$l9b\\!6.1H?$Z9H\"il-_gZD>/JPYsGqH4x4_3v090TCtnFalXGFiAdooDxgrDAYNXShUywSxwYr8gKeyc/4sal4VJ3IxEWsG74V5MYQ0mz27jhy7n5DHsUtApQ6zXHS13uO5vYBlJHpJRfuT6/F5nIpkHre2w3eTtN7M6pg9V5stjnnsavKkzQxyTv15CMSDLFwR_BTZwofhWpyBU7B9ypYL79vT97N3LDZyoaM/fNsOLPIqfGBer_Mx9_StergbQYANyOmOSjR6pZof01ky/ZcNDhpu3CkSl4MTtQ3NMCX780pOKQ5SYIPigyvz9IC9WtrCNcOkTxdOPdY0_4MJU4EuTTPmGvO/14KaJCDjIjgrbIqpzuUEL5mET0t2VeVlwvtnOnlHaBE8sic20ze2E0Xt3ETqXyzVJRjLDKh/LWkW8OVp_xkLBCCW7LQngRukKcOiWjMXeCEhYI9HoZ0RsMEWZC8KzRaHc4OI0uXPD4M9pav1LGrI/_0t_RnBnfnqGKsBJr0kdQi/Y6QN_aeawIqX5hDNIU3MF/wWKVWLS0ZFbDfK6KVv5oAid83EpwKoazAMA8MTfEXvHQLO7k7XYWX1Il3eGXL6/wCA96I1SOabzJkZHo2HsFpIC/VBk52Lnpp0xtDH/OCdlQ5e4PpxXQeklp70LPOndr7QKSYEQNUc48n36ixvTjhgpgO8wHsFFYqGcuBMHg9oaCARppQomiQDWYuVPVDynJHdsM1_gWl4/NSs8Y9PL7DrQXOu0UiFRRE0TUsvgqyUgJzlGjUnRziyYeROO75D0K_3aTtbGbCmhaxecos40a1w0PDCNkFp1W/iHwY7922drhsoM6ShwqqwGpAh5HLuU6Q5gqyckeai6YN7HCh9DdHPhhJcatgtMHZDKfQUBVt9ecUlDgiCFF_OnRX/GpzttcsL8E2FoXL9_eAWvSqjodROqx7MZCA/ORdnR/IssPCYP1kTHTIL5mZxv4UGEpyNjUzt4GdSJJTm0nztltWDYX8_Ezl2JvpLVnGVTJxobb4yQIJhe3n64khbOFyFLKHWEniIolm/AxpZQYmseWlVqrIz3YXU59XaSbTTrdCHNhvwF1ogXiiggN6TZ2B3QY_mBEtAp/SD0ONPVqEUkTNAFWTgnnlv6ZIMdMbTw5uZwtFRlB7qDvQouml9kujGmRu6k7zZMTOwWowRNtpboLUcL2NzkVgK6N1Zi2vq/Nt4NJvM5_l1dpIIbwJv_CIcZQZOqPtRWULa2iVxfmJJQaqgLQPwSHQH1zuRJMhraEsPjqVQRC0pZpSt/24VBDN8y31Ye/y_ekWxMdZCvr978C/WrdcTi29kxjJLyT9BII7BsgT5vLuI2l7ntqRAhAUWMs/h9JR0i8RbX5OfB46q41/TfmSdgi97bCR2HfgflyypXwKhRfKYU2MVpu2Dd90WQUlm7hZV8dSfGusuMj/nPMpRVWcbnvlAdsehJCPbLv6n4qdLSPeoMBo32acAGgu1BwBG8JsBgbH43yYi5X7UdGRWKqm_ZbqaDEKH3ncU/uA8EOJb41VfGho4LUeOi1IeYwVAhFEyO6YbteYZecEubrNFZrWWjZUqhzouzY95TeWU8E4StCXVPKlYPiFiwUSX20kG0lVtDbAy/7u4f4x0cYlFOvI1UN1qoOExmNxnxzQQFeM5exWfW2JrRXq5e0UdAJr4q2o9Y_0WaGfhL/nP6Ei06YajDKr11dK5H0LX/9CGTC37HFZeopyopzP_7fvGFkqIRoGTS48pLaIFz3gwpQNlWXUFCsd/PnRlsqJ3SBQSgp_AQe2cP6iBNy2bJI8lkxwY5YVDDdjxusuCcafdjfs2aUa/4tr_iMnNBnd27GxjQI28_JGJlfbOaajVJOxuPMT4ELpYCfPiFjdSbJyE0/gCwtj0rgDKSLWJnOPJ5TAJ935gCqeIsBhOhfcZX413GdilBZRRYEjCVKfOuWzHZ3GW/8yjyk5e_WMNv5F6xggl07w90DBwpx/Q/iWfncqMuSfoeFeqHQkDL9F5W19j1cGuAcyfIYMAXztHXpgTKh9vZcsLYC7LcgKr4FQj3JjEvtnDG2PjcMjGF/MnbCRCz22Ho410_vE9M1Hpq0wdk_i5DbZKNoSwlPgey9URkpuX146TcDdsx_VWDenCepY5HwMr9CPOY9hzUs/c5AWeUMXk/gvsI81Jkv5rHpEnNBUZXYzfqkwQfffhmrc/StLCtzRRlja8dpsEWdkzoKR9Kdxq1qAs5f0sdrGjVRLTT_s1Q2P59zhA/QmS4bubi64cYot3gSIgdNnkjA2GjCp1ETVa548_U9B6boTKDVmaKJlVIDvqL84RC3WI7Er/8opi2lZ48W83Ur47BRh38oOnI0agrCyZz8bp1w_gfVRlSO8PS0i/l_/qxq5xpLbhPkdxVoyZVsNAZchfnmkIHyIk5IK6EUDXdMR21y6OvKW50ZbooAtk9ymynBj4dAYMsd25RV7FE1I1vRTsiDw52/.E5WC0Ymo2zn.qelSbhzr-4laArYiWP.dwJB6qm_6rs0Rm5UXYaYtUNbh76_jJp_X1xQUCDSgbr2KOkDU0\"Q/-4dV\"Yk3QGg[(O86=Pf\"e17K4'r{)kicofHSXcMmP@>VF^`~4j4F*L/1]tD+Lw!WI!@]*OZm6C`M$u96}*O<U;_cZ84k.|nIqpAaeiroItOenDBL",
          "reason": "some reason",
          "mx_server": "quis proident",
          "processed": "2017-10-13T18:56:21.000Z",
          "event_name": "bounced",
          "bounce_type": "blocked",
          "http_user_agent": "in tempor ex dolore est"
        },
        "required": [
          "event_name",
          "processed",
          "url",
          "bounce_type",
          "http_user_agent",
          "mx_server"
        ],
        "properties": {
          "url": {
            "type": "string",
            "pattern": "^((http[s]?|ftp):\\/)?\\/?([^:\\/\\s]+)((\\/\\w+)*\\/)([\\w\\-\\.]+[^#?\\s]+)(.*)?(#[\\w\\-]+)?$",
            "description": "Used with \"clicked\" event to indicate which url the user clicked."
          },
          "reason": {
            "type": "string",
            "maxLength": 1024,
            "description": "Explanation of what caused \"bounced\", \"deferred\", or \"blocked\". Usually contains error message from the server - e.g. message from gmail why mail was deferred"
          },
          "mx_server": {
            "type": "string",
            "description": "For example mx.gmail.com"
          },
          "processed": {
            "type": "string",
            "description": "Date of when event occurred"
          },
          "event_name": {
            "enum": [
              "bounced",
              "opened",
              "clicked",
              "processed",
              "dropped",
              "delivered",
              "deferred",
              "spam_report",
              "unsubscribe",
              "group_unsubscribe",
              "group_resubscribe"
            ],
            "type": "string",
            "description": "Name of event"
          },
          "attempt_num": {
            "type": "integer",
            "maximum": 10,
            "minimum": 1,
            "description": "Used with \"deferred\" events to indicate the attempt number out of 10. One \"deferred\" entry will exists under events array for each time a message was deferred with error message from the server. "
          },
          "bounce_type": {
            "enum": [
              "bounced",
              "blocked",
              "expired"
            ],
            "type": "string",
            "description": "Use to distinguish between types of bounces"
          },
          "http_user_agent": {
            "type": "string",
            "description": "Client recipient used to click or open message"
          }
        }
      },
      "description": "List of events related to email message"
    },
    "msg_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9]+",
      "maxLength": 50,
      "minLength": 5
    },
    "status": {
      "enum": [
        "processed",
        "not delivered",
        "delivered"
      ],
      "type": "string",
      "description": "Quick summary of the status of a message"
    },
    "subject": {
      "type": "string",
      "maxLength": 255,
      "minLength": 3
    },
    "teammate": {
      "type": "string",
      "pattern": "^$|^[A-Za-z0-9]+",
      "maxLength": 64,
      "minLength": 0,
      "description": "Teammate's username"
    },
    "to_email": {
      "type": "string",
      "pattern": "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b"
    },
    "api_key_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9]+",
      "maxLength": 50,
      "minLength": 3
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Categories users associated to the message"
    },
    "from_email": {
      "type": "string",
      "pattern": "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b"
    },
    "outbound_ip": {
      "type": "string",
      "format": "ipv4",
      "description": "IP used to send to the remote MTA. Used by UI to display IP in detailed view"
    },
    "template_id": {
      "type": "string",
      "format": "uuid"
    },
    "unique_args": {
      "type": "string",
      "default": "Null",
      "description": "JSON hash of arbitrary key-value pairs"
    },
    "asm_group_id": {
      "type": "integer",
      "minimum": 1
    },
    "originating_ip": {
      "type": "string",
      "format": "ipv4",
      "description": "This is the IP of the user who sent the message."
    },
    "outbound_ip_type": {
      "enum": [
        "dedicated",
        "shared"
      ],
      "type": "string",
      "description": "Whether or not the outbound IP is dedicated vs shared"
    }
  }
}
object ReverseDnsDeleteReverseDnsRecordResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
array ReverseDnsGetAllReverseDnsRecordsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/reverse_dns"
  }
}
object ReverseDnsSetUpReverseDnsRequest
{
  "type": "object",
  "example": {
    "ip": "192.168.1.1",
    "domain": "example.com",
    "subdomain": "email"
  },
  "required": [
    "ip",
    "domain"
  ],
  "properties": {
    "ip": {
      "type": "string",
      "description": "The IP address for which you want to set up reverse DNS."
    },
    "domain": {
      "type": "string",
      "description": "The root, or sending, domain that will be used to send message from the IP address."
    },
    "subdomain": {
      "type": "string",
      "description": "The subdomain that will be used to send emails from the IP address. This should be the same as the subdomain used to set up an authenticated domain."
    }
  }
}
object ReverseDnsValidateRecord404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string",
            "description": "A message describing why the reverse DNS could not be validated."
          }
        }
      },
      "description": "The error messages for the failed validation."
    }
  }
}
object ReverseDnsValidateRecord500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string",
            "description": "A message describing why the IP whitelabel could not be validated."
          }
        }
      },
      "description": "The error messages for the failed validation."
    }
  }
}
object ReverseDnsValidateRecordResponse
{
  "type": "object",
  "required": [
    "id",
    "valid",
    "validation_results"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "The ID of the reverse DNS record."
    },
    "valid": {
      "enum": [
        true,
        false
      ],
      "type": "boolean",
      "description": "Indicates if the reverse DNS record is valid."
    },
    "validation_results": {
      "type": "object",
      "properties": {
        "a_record": {
          "type": "object",
          "required": [
            "valid",
            "reason"
          ],
          "properties": {
            "valid": {
              "enum": [
                true,
                false
              ],
              "type": "boolean",
              "description": "Indicates if the reverse DNS record could be validated."
            },
            "reason": {
              "type": "string",
              "nullable": true,
              "description": "The reason the reverse DNS record could not be validated. Is `null` if the reverse DNS record was validated."
            }
          }
        }
      },
      "description": "The specific results of the validation."
    }
  }
}
object SegmentingContactsBulkDeleteSegments202Response
{
  "type": "object",
  "example": {},
  "properties": {}
}
object SegmentingContactsBulkDeleteSegments400Response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object SegmentingContactsBulkDeleteSegmentsRequest
{
  "type": "object",
  "example": {
    "ids": [
      "a14dcc63-d651-4c57-9826-4a3705f5c78d",
      "f3de551e-dc5c-4d42-bd08-c7f87f87f0e8",
      "1b8107b5-adf4-401c-8865-fa84ba178fb9",
      "d7900715-c904-4728-acff-9ab79627579e",
      "16641f5b-cfa3-41b9-9626-244488ee85b1"
    ]
  },
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      }
    }
  }
}
object SegmentingContactsBulkDeleteSegmentsResponse
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Segment ID"
          },
          "error": {
            "type": "string",
            "description": "error message that indicates why segment cannot be deleted (\"in-use\", \"segment not found\", \"invalid uuid\")"
          },
          "resources": {
            "type": "object",
            "properties": {
              "ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "the resource ids"
              },
              "type": {
                "type": "string",
                "description": "the type of resource in use (e.g., \"automation\")"
              }
            },
            "description": "resources in which segment is being used"
          }
        }
      }
    }
  }
}
object SegmentingContactsCreateNewSegmentRequest
{
  "allOf": [
    {
      "$ref": "#/components/schemas/segment_write_v2"
    },
    {
      "type": "object",
      "properties": {
        "parent_list_id": {
          "type": "string",
          "format": "uuid",
          "maxLength": 36,
          "minLength": 36,
          "description": "The id of the list if this segment is a child of a list.  This implies the query is rewritten as `(${query_dsl}) AND CONTAINS(list_ids, ${parent_list_id})`"
        }
      }
    }
  ]
}
object SegmentingContactsCreateNewSegmentResponse
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object SegmentingContactsDeleteById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message",
          "field"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object SegmentingContactsDeleteById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object SegmentingContactsDeleteByIdResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object SegmentingContactsGetById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
object SegmentingContactsGetByIdResponse
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "message",
          "field"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
Load more schemas