{"action":"created","comment":{"url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/comments/203436266","pull_request_review_id":138300022,"id":203436266,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMzQzNjI2Ng==","diff_hunk":"@@ -3,1175 +3,798 @@ title: Transmissions\n description: Use the transmissions API to send a batch of messages through SparkPost.\n \n # Group Transmissions\n-<a name=\"transmissions-api\"></a>\n \n-A transmission is a collection of messages belonging to the same campaign. It is also known as a mailing. The Transmissions API provides the means to create and manage transmissions - to send messages.\n+The Transmissions endpoint lets you send email. Each transmission can send an email to a single recipient or thousands. SparkPost generates and sends messages using the options you've defined, a list of recipients, and the content given in transmissions call.\n \n-SparkPost generates and sends the messages from your transmissions using a list of recipients and a message template. You can [store a recipient list](recipient-lists.html), or you can include recipients \"inline\" with your transmission request. Similarly, you can [store your message template](templates.html) or include it \"inline\" with your transmission request. SparkPost then sends a unique message to each recipient using the specified template. You may also choose to personalise your messages by including substitution variables in your transmissions. You can [learn about templates and substitution here](substitutions-reference.html).  Finally, you can enable engagement tracking in your transmissions to track message opens and clicks.\n+When creating a transmission, the [options](#header-request-body) allow you to configure engagement tracking, sending optimization, global substitution data, and more to control how your emails are sent.\n \n-The Transmissions API also supports A/B testing, which allows you to compare different variants of a template, and ultimately send the winning one (based on engagement data) when the test has completed.  See [A/B Testing](ab-testing.html) for more details.\n+To set the recipients you can include the all recipients in the request or use a [stored recipient list](/api/recipient-lists/). In each recipient, you can pass in metadata and substitution data to [personalize](/api/substitutions-reference/) each email. You can also set the transmission to treat certain recipients as [CC'd or BCC'd](https://www.sparkpost.com/docs/faq/cc-bcc-with-rest-api/).\n \n-For details on how to get the best out of SparkPost Transmission, see [this support article](https://www.sparkpost.com/docs/tech-resources/smtp-rest-api-performance/).\n+The content of the messages can be passed in 4 different ways: [inline content](#transmissions-post-send-inline-content), a [stored template](#transmissions-post-send-a-template), an [A/B test](#transmissions-post-send-an-a-b-test), or raw [RFC822 content](#transmissions-post-send-rfc822-content). Each method has different use cases they are best suited for. All of these types of content can use the substitution data and metadata to create a unique message for each recipient.\n \n-## Using Postman\n+Learn about [how to optimize your sending](https://www.sparkpost.com/docs/tech-resources/smtp-rest-api-performance/) with SparkPost.\n \n-If you use [Postman](https://www.getpostman.com/) you can click the following button to import the SparkPost API as a collection:\n+### The Sandbox Domain\n \n-[![Run in Postman](https://s3.amazonaws.com/postman-static/run-button.png)](https://app.getpostman.com/run-collection/5d9ae743a661a15d64bb)\n+The sandbox domain allows you to send your first email without setting up a sending domain. You can send up to 5 sandbox messages over the lifetime of your account. To send a message from the sandbox domain, set the `from` address to `anything@sparkpostbox.com` and set `options.sandbox` to `true`. Just like with any sending domain, you can set the part before the `@` to any mailbox.\n \n-## The Sandbox Domain\n+For more extensive testing with your own sending doman, use the SparkPost [Sink Server](https://www.sparkpost.com/docs/faq/using-sink-server/).\n \n-The sandbox domain `sparkpostbox.com` is available to allow each account to send test messages in advance of configuring a real sending domain. Each SparkPost account has a lifetime allowance of 5 sandbox domain messages. To send a test message from the sandbox domain, set `content.from.email` field to `localpart@sparkpostbox.com` and ensure `options.sandbox` is set to `true`.\n+<banner status=\"info\"><strong>Note</strong>: The sandbox domain is not available for <strong><a href=\"https://www.sparkpost.com/enterprise-email/\">Enterprise</a></strong> accounts.</banner>\n \n-<div class=\"alert alert-info\"><strong>Note</strong>: you can set the 'local part' (the part before the <tt>@</tt>) to any valid email local part. <a href=\"#transmissions-create-post\"><strong>See below</strong></a> for more details on sending mail.</div>\n \n-<div class=\"alert alert-info\"><strong>Note</strong>: SparkPost accounts only. <strong><a href=\"https://www.sparkpost.com/enterprise-email/\">SparkPost Enterprise</a></strong> accounts should consider using the <a href=\"https://support.sparkpost.com/customer/portal/articles/2560839\">SparkPost Sink Server</a>.</div>\n+### Sending Limits\n \n-## Transmission Attributes\n+Your account has a sandbox, hourly, daily, and monthly sending limit based on your current plan level. You can view your current limits on the [dashboard](https://app.sparkpost.com/dashboard) ([EU](https://app.eu.sparkpost.com/dashboard)). If a transmission will push your over the sandbox, hourly, or daily sending limit, an error with the status code `420` is returned, along with a message detailing which limit you will exceed. If this happens, no messages are sent, regardless of the number of messages that to exceeded your limit.\n \n-| Field         | Type     | Description                           | Required         | Notes   |\n-|--------------------|----------------      |---------------------------------------|--------------------------|--------|\n-|id |string |ID of the transmission |no |Read only.  A unique ID is generated for each transmission on submission. |\n-|state |string  |State of the transmission  | no | Read only.  Valid responses are `submitted`, `Generating`, `Success`, or `Canceled`. |\n-|options | JSON object | JSON object in which transmission options are defined | no | For a full description, see [Options Attributes](#header-options-attributes).\n-|recipients | JSON array or JSON object | Inline recipient objects or object containing stored recipient list ID |yes | Specify a stored recipient list or specify recipients inline.  When using a stored recipient list, specify the `list_id` as described in Using a Stored Recipient List.  Otherwise, provide the recipients inline using the fields described in the Recipient List API documentation for Recipient Attributes. |\n-|campaign_id | string |Name of the campaign|no|Maximum length - 64 bytes|\n-|description | string |Description of the transmission|no | Maximum length - 1024 bytes|\n-|metadata|JSON object|Transmission level metadata containing key/value pairs |no| Metadata is available during events through the Webhooks and is provided to the substitution engine.  A maximum of 1000 bytes of merged metadata (transmission level + recipient level) is available with recipient metadata taking precedence over transmission metadata when there are conflicts.  |\n-|substitution_data|JSON object|Key/value pairs that are provided to the substitution engine| no | Recipient substitution data takes precedence over transmission substitution data. Unlike metadata, substitution data is not included in Webhook events. |\n-|return_path | string | Email address to use for envelope FROM | no | For <span class=\"label label-primary\"><strong>SparkPost</strong></span> accounts, the domain part of the return_path address must be a [CNAME-verified sending domain](sending-domains.html#sending-domains-verify-post).  The local part of the return_path address will be overwritten by SparkPost servers.<br><br>For <a href=\"https://www.sparkpost.com/enterprise-email/\"><span class=\"label label-warning\"><strong>Enterprise</strong></span></a> accounts, the return_path may be any valid email address and the localpart in the return_path will **not** be overwritten by SparkPost servers.  To support Variable Envelope Return Path (VERP), this field can also optionally be specified inside each recipient object in order to give the recipients unique envelope MAIL FROM addresses. |\n-|content| JSON object | Content that will be used to construct a message | yes | Specify a stored template or specify inline template content. When using a stored template, specify the `template_id` as described in Using a Stored Template.  Otherwise, provide the inline content using the fields described in Inline Content Attributes.  Maximum size - 20MBs|\n-|total_recipients | number | Computed total recipients | no | Read only|\n-|num_generated | number | Computed total number of messages generated | no |Read only|\n-|num_failed_generation| number| Computed total number of failed messages | no | Read only|\n-|num_invalid_recipients | number | Number of recipients that failed input validation |no |Read only|\n+Learn more about these [limits](https://www.sparkpost.com/docs/faq/daily-and-monthly-quota-limits/) and [what counts towards usage](https://www.sparkpost.com/docs/getting-started/what-counts-daily-monthly-usage/).\n \n+```json\n+{\n+  \"errors\": [\n+    {\n+      \"message\": \"Exceed Sending Limit (hourly)\",\n+      \"code\": \"2101\"\n+    }\n+  ]\n+}\n+```\n \n-### Options Attributes\n-| Field         | Type     | Description                           | Required   | Notes   |\n-|------------------------|:-:       |---------------------------------------|-------------|--------|\n-|start_time | string | Delay generation of messages until this datetime.  For additional information, see [Scheduled Transmissions](#header-scheduled-transmissions).  **Not available in SparkPost EU.** |no - defaults to immediate generation | Format YYYY-MM-DDTHH:MM:SS+-HH:MM. Example: `2017-02-11T08:00:00-04:00`.|\n-|open_tracking|boolean| Whether open tracking is enabled for this transmission| no |If not specified, the setting at template level is used, or defaults to true. |\n-|click_tracking|boolean| Whether click tracking is enabled for this transmission| no |If not specified, the setting at template level is used, or defaults to true. |\n-|transactional|boolean|Whether message is [transactional](https://www.sparkpost.com/resources/infographics/email-difference-transactional-vs-commercial-emails/) for unsubscribe and suppression purposes<br/><span class=\"label label-info\"><strong>Note</strong></span> no `List-Unsubscribe` header is included in transactional messages. | no | If not specified, the setting at template level is used, or defaults to false. |\n-|sandbox|boolean|Whether to use the sandbox sending domain | no |Defaults to false. <span class=\"label label-primary\"><strong>SparkPost</strong></span> accounts may use the sandbox |\n-|skip_suppression|boolean| Whether to ignore customer suppression rules, for this transmission only. | no | <a href=\"https://www.sparkpost.com/enterprise-email/\"><span class=\"label label-warning\"><strong>Enterprise</strong></span></a> Defaults to false. |\n-|smart_send|boolean| Whether to enable Smart Send, which will suppress unengaged recipients. Limited to this transmission.  <a href=\"https://www.sparkpost.com/enterprise-email/\"><span class=\"label label-warning\"><strong>Enterprise</strong></span></a> accounts, contact your TAM for support details. | no | Defaults to false. |\n-| ip_pool | string | The ID of a dedicated IP pool associated with your account. If this field is not provided, the account's default dedicated IP pool is used (if there are IPs assigned to it). | no | <span class=\"label label-primary\"><strong>SparkPost</strong></span> accounts may use IP pools. For more information on dedicated IPs, see the [Support Center](https://www.sparkpost.com/docs/deliverability/dedicated-ip-pools).<br><br><a href=\"https://www.sparkpost.com/enterprise-email/\"><span class=\"label label-warning\"><strong>Enterprise</strong></span></a> accounts, contact your TAM for support details.\n-|inline_css|boolean|Whether to perform CSS inlining in HTML content<br/><span class=\"label label-info\"><strong>Note</strong></span> only rules in `head > style` elements will be inlined | no - Defaults to false |  |\n \n-### Inline Content Attributes\n-\n-The following attributes are used when specifying inline content in the transmission's `content` JSON object.\n-\n-<div class=\"alert alert-warning\"><strong>Note</strong>: the following attributes should not be present when using a stored template.</div>\n-<div class=\"alert alert-info\"><strong>Note</strong>: one of <tt>html</tt>, <tt>text</tt>, or <tt>push</tt> is required. Email transmissions have additional required fields.</div>\n-\n-| Field         | Type     | Description                           | Required   | Notes   |\n-|------------------------|:-:       |---------------------------------------|-------------|--------|\n-|html    |string  |HTML content for the email's text/html MIME part| yes, for email |Expected in the UTF-8 charset with no Content-Transfer-Encoding applied.  Substitution syntax is supported. |\n-|text    |string  |Text content for the email's text/plain MIME part| yes, for email |Expected in the UTF-8 charset with no Content-Transfer-Encoding applied.  Substitution syntax is supported.|\n-|subject |string  |Email subject line   | yes, for email |Expected in the UTF-8 charset without RFC2047 encoding.  Substitution syntax is supported. |\n-|from |string or JSON  | Address `\"from\" : \"deals@company.com\"` or JSON object composed of the `name` and `email` fields `\"from\" : { \"name\" : \"My Company\", \"email\" : \"deals@company.com\" }` used to compose the email's `From` header| yes, for email | Substitution syntax is supported. |\n-|reply_to |string  |Email address used to compose the email's \"Reply-To\" header | no | Substitution syntax is supported. |\n-|headers| JSON | JSON dictionary containing headers other than `Subject`, `From`, `To`, and `Reply-To`  | no |See the [Header Notes](#header-header-notes). |\n-|attachments| JSON | JSON array of attachments. | no | For a full description, see [Attachment Attributes](#header-attachment-attributes). |\n-|inline_images| JSON | JSON array of inline images. | no | For a full description, see [Inline Image Attributes](#header-inline-image-attributes). |\n-\n-#### Header Notes\n-\n-* Headers such as `Content-Type` and `Content-Transfer-Encoding` are not allowed here as they are auto generated upon construction of the email.\n-* The `To` header should not be specified here, since it is generated from each recipient's `address.name` and `address.email`.\n-* Each header value is expected in the UTF-8 charset without RFC2047 encoding.\n-* Substitution syntax is supported.\n-\n-#### email_rfc822 Notes\n-\n-Alternately, the content JSON object may contain a single `email_rfc822` field. `email_rfc822` is mutually exclusive with all of the above fields.\n-\n-| Field         | Type     | Description                           | Required   |\n-|--------------------|:-:       |---------------------------------------|-----------------------|\n-|email_rfc822    |string  |Pre-built message as specified by the [message/rfc822 Content-Type](http://tools.ietf.org/html/rfc2046#section-5.2.1) |no   |\n-\n-* Substitutions will be applied in the top-level headers and the first non-attachment `text/plain` and\n-first non-attachment `text/html` MIME parts only.\n-* Lone `LF`s and lone `CR`s are allowed. The system will convert line endings to `CRLF` where\n-necessary.\n-* The provided `email_rfc822` should NOT be dot stuffed.  The system dot stuffs before sending the outgoing message.\n-* The provided `email_rfc822` should NOT contain the SMTP terminator `\\r\\n.\\r\\n`.  The system always adds this terminator.\n-* The provided `email_rfc822` in MIME format will be rejected if SparkPost cannot parse the contents into a MIME tree.\n-\n-### Attachment Attributes\n-\n-<div class=\"alert alert-danger\">Sending attachments with malicious content is <strong>strictly prohibited</strong> by SparkPost. This includes (and is not limited to) files with `bat` and `exe` extensions.</div>\n-\n-Attachments for a transmission are specified in the `content.attachments` JSON array where each JSON object in the array is described by the following fields:\n-\n-| Field         | Type     | Description                           | Required   | Notes   |\n-|--------------------|:-:       |---------------------------------------|-------------|------------------|\n-|type |string |The MIME type of the attachment; e.g., `text/plain`, `image/jpeg`, `audio/mp3`, `video/mp4`, `application/msword`, `application/pdf`, etc., including the `charset` parameter (ex: `text/html; charset=\"UTF-8\"`) if needed. The value will apply as-is to the `Content-Type` header of the generated MIME part for the attachment. | yes |  |\n-|name |string |The filename of the attachment (for example, `document.pdf`). This is inserted into the filename parameter of the `Content-Disposition` header. | yes | Maximum length - 255 bytes |\n-|data |string |The content of the attachment as a Base64 encoded string.  The string should not contain `\\r\\n` line breaks.  The SparkPost systems will add line breaks as necessary to ensure the Base64 encoded lines contain no more than 76 characters each. | yes | The entirety of transmission content (text + html + attachments + inline images) is limited to 20 MBs |\n-\n-### Inline Image Attributes\n-\n-Inline images for a transmission are specified in the `content.inline_images` JSON array where each JSON object in the array is described by the following fields:\n-\n-| Field         | Type     | Description                           | Required   | Notes   |\n-|--------------------|:-:       |---------------------------------------|-------------|------------------|\n-|type |string |The MIME type of the image; e.g., `image/jpeg`.  The value will apply as-is to the `Content-Type` header of the generated MIME part for the image. | yes |  |\n-|name |string |The name of the inline image, which will be inserted into the `Content-ID` header. The image should be referenced in your HTML content using `<img src=\"cid:THIS_NAME\" />`. The name must be unique within the `content.inline_images` array. | yes | Maximum length - 255 bytes |\n-|data |string | The content of the image as a Base64 encoded string.  The string should not contain `\\r\\n` line breaks.  The SparkPost systems will add line breaks as necessary to ensure the Base64 encoded lines contain no more than 76 characters each. | yes | The entirety of transmission content (text + html + attachments + inline images) is limited to 20 MBs |\n-\n-### Using a Stored Template\n-\n-The following attributes are used when specifying a stored template in the transmission's `content` JSON object. Note that these attributes should not be present when using inline content.\n-\n-| Field         | Type     | Description                           | Required   | Notes   |\n-|------------------------|:-:       |---------------------------------------|-------------|--------|\n-|template_id|string| ID of the stored template to use | yes |Specify this field when using a stored template.  Maximum length -- 64 bytes|\n-|use_draft_template|boolean |Whether to use a draft template|no - defaults to false| If this field is set to `true` and no draft template exists, the transmission will fail.|\n-\n-### Using a Stored Recipient List\n-\n-The following recipients attribute is used when specifying a stored recipient list in the transmission. Note that this attribute should not be present when specifying recipients inline.\n-\n-| Field         | Type     | Description                           | Required   | Notes   |\n-|------------------------|:-:       |---------------------------------------|-------------|--------|\n-|list_id | string  | Identifier of the stored recipient list to use | yes | Specify this field when using a stored recipient list. |\n-\n-### Scheduled Transmissions\n-**Not available in SparkPost EU.**\n-\n-Use the `options.start_time` attribute to delay generation of messages.  The scheduled time cannot be greater than 31 days from the time of submission.  If the scheduled time does not pass validation, the transmission is not accepted.  Transmissions with a scheduled time in the past _are_ accepted and undergo immediate generation.\n-\n-### Using an A/B Test\n-\n-The following attributes are used when specifying an A/B test in the transmission's `content` JSON object.\n-\n-| Field         | Type     | Description                           | Required   | Notes   |\n-|------------------------|:-:       |---------------------------------------|-------------|--------|\n-|ab_test_id|string| ID of the A/B test to use | yes |Specify this field when using an A/B test|\n-\n-<div class=\"alert alert-info\"><strong>Note</strong>: When using substitution data with A/B tests, data for all possible templates must be provided.  It is recommended best practice that all templates that make up an A/B test use the same substitution data fields</div>\n-\n-<div class=\"alert alert-info\"><strong>Note</strong>: A/B Tests only support inline single recipient transmissions currently</div>\n-\n-\n-## Create [/transmissions{?num_rcpt_errors}]\n-\n-### Create a Transmission [POST]\n+## Create a Transmission [/transmissions/{?num_rcpt_errors}]\n \n You can create a transmission in a number of ways. In all cases, you can use the `num_rcpt_errors` parameter to limit the number of recipient errors returned.\n \n-<div class=\"alert alert-info\"><strong>Note</strong>: Sending limits apply to SparkPost accounts only. When a transmission is created, the number of messages in the transmission is compared to the sending limit of your account. If the transmission will cause you to exceed your sending limit, the entire transmission results in an error and no messages are sent.  Note that no messages will be sent for the given transmission, regardless of the number of messages that caused you to exceed your sending limit. In this case, the Transmission API will return an HTTP 420 error code with an error detailing whether you would exceed your hourly, daily, or sandbox sending limit.</div>\n-\n-#### Using Inline Email Part Content\n-\n-Create a transmission using inline email part content.\n-\n-#### Using Inline RFC822 Content\n-\n-Create a transmission using inline RFC822 content. Content headers are not generated for transmissions providing RFC822 content. They are expected to be provided as headers contained in the RFC822 content.\n-\n-#### Using a Stored Recipients List\n-\n-Create a transmission using a stored recipients list by specifying the `list_id` in the `recipients` attribute.\n-\n-#### Using a Stored Template\n-\n-Create a transmission using a stored template by specifying the `template_id` in the `content` attribute.  The `use_draft_template` field is optional and indicates whether to use a draft version or the published version of the template when generating messages.\n-\n-#### Scheduling Transmissions\n-**Not available in SparkPost EU.**\n-\n-Create a scheduled transmission to be generated and sent at a future time by specifying `start_time` in the `options` attribute.\n-\n-Scheduling a transmission that specifies a stored template will use the LATEST version of the template available at the time of scheduled generation.  The use of published versus draft versions follows the same logic in all transmission requests, whether scheduled or immediate generation. When `use_draft_template` is not specified (or set to false), the latest published version of the specified stored template is used. If `use_draft_template` is set to `true`, the latest draft version is used in the transmission instead.\n-\n-Once message generation has been initiated, all messages in the transmission will use the template selected at the start of the generation. If a template update is made during the generation of a transmission that uses that template, the template update will succeed but the transmission will continue to use the version that was selected at the start of the generation.\n-\n-#### Using an A/B Test\n-\n-Create a transmission using an A/B test by specifying the `ab_test_id` in the `content` attribute.\n-\n-+ Parameters\n-  + num_rcpt_errors (optional, number, `3`) ... Maximum number of recipient errors that this call can return, otherwise all validation errors are returned.\n-\n-+ Request Create Transmission using Inline Email Part Content (application/json)\n-\n-    + Headers\n-\n-            Authorization: 14ac5499cfdd2bb2859e4476d2e5b1d2bad079bf\n-\n-    + Body\n-\n+<banner status=\"warning\">The entirety of transmission content (text + html + attachments + inline images) is limited to 20 MBs.</banner>\n+\n++ Data Structure: Parameters\n+    + num_rcpt_errors (number, `3`) - Maximum number of recipient errors that this call can return, otherwise all validation errors are returned.\n+\n+### Request Body\n+\n++ Data Structure\n+    + options (object) - Object containing transmission options. If an option is not set, the [template-level option](#header-template-object) is used.\n+        + start_time (string) - Delay generation of messages until this datetime. For additional information, see [Scheduled Transmissions](#transmissions-scheduled-transmissions). **Not available in SparkPost EU.** <br />Format: `YYYY-MM-DDTHH:MM:SS+-HH:MM`\n+            + Default: now\n+        + open_tracking (boolean) - Enable or disable open tracking.\n+            + Default: true\n+        + click_tracking (boolean) - Enable or disable click tracking.\n+            + Default: true\n+        + transactional (boolean) - Distinguish between [transactional and non-transactional](https://www.sparkpost.com/resources/infographics/email-difference-transactional-vs-commercial-emails/) messages for unsubscribe and suppression purposes.\n+            + Default: false\n+        + sandbox (boolean) - Whether to use the [sandbox sending domain](#header-the-sandbox-domain).\n+            + Default: false\n+        + skip_suppression (boolean) - Whether to ignore customer suppression rules. <span class=\"label label-warning\"><strong>Enterprise</strong></span> only.\n+            + Default: false.\n+        + smart_send (boolean) - <a href=\"/labs/\"><span class=\"label label-info\"><strong>LABS</strong></span></a> Whether to enable [Smart Send](https://www.sparkpost.com/blog/smart-send/), which will suppress unengaged recipients. <br/><a href=\"https://www.sparkpost.com/enterprise-email/\"><span class=\"label label-warning\"><strong>Enterprise</strong></span></a> accounts, contact your TAM for support details.\n+            + Default: false\n+        +  ip_pool (string) - The ID of a [dedicated IP pool](https://www.sparkpost.com/docs/deliverability/dedicated-ip-pools) associated with your account. If this field is not provided, the account's default dedicated IP pool is used (if there are IPs assigned to it). <br/><a href=\"https://www.sparkpost.com/enterprise-email/\"><span class=\"label label-warning\"><strong>Enterprise</strong></span></a> accounts, contact your TAM for support details.\n+        + inline_css (boolean) - Whether to inline the CSS in `<style>` tags in the `<head>` in the HTML content.\n+            + Defaults: false\n+    + recipients (enum, required) - Array of [recipient objects](/api/recipient-lists/#header-recipient-object) or a single object containing a [stored recipient `list_id`](#header-stored-recipient-list).\n+        + (array)\n+        + (object)\n+    + content (object, required) - Content that will be used to construct a message. The content can be passed in 4 different ways: [inline content](#transmissions-post-send-inline-content), [stored template](#transmissions-post-send-a-template), [A/B test](#transmissions-post-send-an-a-b-test), or [RFC822 content](#transmissions-post-send-rfc822-content).\n+    + campaign_id (string) - Name of the campaign. Maximum length - 64 bytes\n+    + description (string) - Description of the transmission. Maximum length - 1024 bytes\n+    + metadata (object) - Transmission level metadata. Metadata is available during in Webhook events and can also be used as substitution data. Recipient metadata taking precedence over transmission metadata. A maximum of 1000 bytes of merged metadata (transmission level + recipient level) is allowed.\n+    + substitution_data (object) - Key/value pairs that are provided to the substitution engine. Recipient substitution data takes precedence over transmission substitution data.\n+    + return_path (string)\n+        Email address to use for envelope FROM. The domain of the `return_path` address must be a [CNAME-verified sending domain](sending-domains.html#header-using-a-sending-domain-as-a-bounce-domain).  The local part of the `return_path` address will be overwritten by SparkPost.<br><br>For <a href=\"https://www.sparkpost.com/enterprise-email/\"><span class=\"label label-warning\"><strong>Enterprise</strong></span></a> accounts, the `return_path` may be any valid email address and the local part in the `return_path` will **not** be overwritten by SparkPost servers.  To support [Variable Envelope Return Path](https://en.wikipedia.org/wiki/Variable_envelope_return_path) (VERP), this field can be specified in each recipient object in order to give the recipients unique envelope MAIL FROM addresses.\n++ Sample\n+\n+    ```\n+    {\n+      \"options\": {\n+        \"open_tracking\": true,\n+        \"click_tracking\": true,\n+        \"transactional\": false,\n+        \"sandbox\": false,\n+        \"ip_pool\": \"my_ip_pool\",\n+        \"smart_send\": true,\n+        \"inline_css\": true\n+      },\n+      \"description\": \"Christmas Campaign Email\",\n+      \"campaign_id\": \"christmas_campaign\",\n+      \"metadata\": {\n+        \"user_type\": \"students\",\n+        \"education_level\": \"college\"\n+      },\n+      \"substitution_data\": {\n+        \"sender\": \"Big Store Team\",\n+        \"holiday_name\": \"Christmas\"\n+      },\n+      \"recipients\": [\n         {\n-          \"options\": {\n-            \"open_tracking\": true,\n-            \"click_tracking\": true,\n-            \"transactional\": false,\n-            \"sandbox\": false,\n-            \"ip_pool\": \"my_ip_pool\",\n-            \"inline_css\": false\n+          \"address\": {\n+            \"email\": \"wilma@flintstone.com\",\n+            \"name\": \"Wilma Flintstone\"\n           },\n-          \"description\": \"Christmas Campaign Email\",\n-          \"campaign_id\": \"christmas_campaign\",\n-\n+          \"tags\": [\n+            \"greeting\",\n+            \"prehistoric\",\n+            \"fred\",\n+            \"flintstone\"\n+          ],\n           \"metadata\": {\n-            \"user_type\": \"students\",\n-            \"education_level\": \"college\"\n+            \"age\": \"24\",\n+            \"place\": \"Bedrock\"\n           },\n-\n           \"substitution_data\": {\n-            \"sender\": \"Big Store Team\",\n-            \"holiday_name\": \"Christmas\"\n-          },\n-\n-          \"recipients\": [\n-            {\n-              \"address\": {\n-                \"email\": \"wilma@flintstone.com\",\n-                \"name\": \"Wilma Flintstone\"\n-              },\n-              \"tags\": [\n-                \"greeting\",\n-                \"prehistoric\",\n-                \"fred\",\n-                \"flintstone\"\n-              ],\n-              \"metadata\": {\n-                \"age\": \"24\",\n-                \"place\": \"Bedrock\"\n-              },\n-              \"substitution_data\": {\n-                \"customer_type\": \"Platinum\",\n-                \"year\": \"Freshman\"\n-              }\n-            }\n-          ],\n-          \"content\": {\n-            \"from\": {\n-              \"name\": \"Fred Flintstone\",\n-              \"email\": \"fred@flintstone.com\"\n-            },\n-            \"subject\": \"Big Christmas savings!\",\n-            \"reply_to\": \"Christmas Sales <sales@flintstone.com>\",\n-            \"headers\": {\n-              \"X-Customer-Campaign-ID\": \"christmas_campaign\"\n-            },\n-            \"html\": \"<p>Hi {{address.name}} \\nSave big this Christmas in your area {{place}}! \\nClick http://www.mysite.com and get huge discount\\n</p><p>Hurry, this offer is only to {{user_type}}\\n</p><p>{{sender}}</p>\"\n+            \"customer_type\": \"Platinum\",\n+            \"year\": \"Freshman\"\n           }\n         }\n+      ],\n+      \"content\": { ... }\n+    }\n+    ```\n+\n+<br />\n+<br />\n+<br />\n+\n+### Stored Recipient List\n+\n+The following `recipients` attribute is used when specifying a stored recipient list in the transmission. Note that this attribute should not be present when specifying recipients inline.\n+\n++ Data Structure: Recipients Content\n+    + list_id (string, required) \n+        Identifier of the stored recipient list to use.\n+        <hr style=\"margin-top: 0;\" />\n+\n+        Create a transmission using a stored recipients list by specifying the `list_id` in the `recipients` attribute.\n++ Sample\n+    ```\n+    {\n+      \"recipients\": {\n+        \"list_id\": \"christmas_sales_2013\"\n+      },\n+      \"content\": {\n+        \"from\": {\n+          \"name\": \"Fred Flintstone\",\n+          \"email\": \"fred@flintstone.com\"\n+        },\n+        \"subject\": \"Big Christmas savings!\",\n+        \"text\": \"Hi {{name}} \\nSave big this Christmas in your area {{place}}! \\nClick http://www.mysite.com and get huge discount\\n Hurry, this offer is only to {{user_type}}\\n {{sender}}\",\n+        \"html\": \"<p>Hi {{name}} \\nSave big this Christmas in your area {{place}}! \\nClick http://www.mysite.com and get huge discount\\n</p><p>Hurry, this offer is only to {{user_type}}\\n</p><p>{{sender}}</p>\"\n+      },\n+      ...\n+    }\n+    ```\n+\n+<br />\n+<br />\n+<br />\n+\n+### Send Inline Content [POST]\n+\n+Substitution syntax is supported in `from`, `subject`, `text`, `html`, `reply_to`, and `headers`. The following attributes are used when specifying inline content in the transmission's `content` object:\n+\n++ Data Structure: Content Attributes\n+    + from (enum, required) - Email address used to compose the email's `From` header. The domain must be a verified sending domain. Can be a string with a valid email address or an object with the following attributes:\n+        + (string)\n+        + (object)\n+            + name (string) - The named associated with the email address.\n+            + email (string, required) - the email address to send from.\n+    + subject (string, required) - Email subject line. Expected in the UTF-8 charset without RFC2047 encoding.\n+    + html (string) - HTML content for the email's `text/html` MIME part. At a minimum, html or text is required. Expected in the UTF-8 charset with no `Content-Transfer-Encoding` applied.\n+    + text (string) - Text content for the email's `text/plain` MIME part. At a minimum, html or text is required. Expected in the UTF-8 charset with no `Content-Transfer-Encoding` applied.\n+    + reply_to (string) - Email address used to compose the email's \"Reply-To\" header.\n+    + headers (object) - Object containing headers other than `Subject`, `From`, `To`, and `Reply-To` . See the [Header Notes](#header-header-notes).\n+    + attachments (array[object]) - Array of attachments. For a full description, see [Attachment Object](#header-attachment-object).\n+    + inline_images (array[object]) - Array of inline images For a full description, see [Inline Image Object](#header-inline-image-object).\n \n-+ Response 200 (application/json)\n+#### Header Notes\n \n-    + Headers\n+* Headers such as `Content-Type` and `Content-Transfer-Encoding` are not allowed, as they are auto-generated upon construction of the email.\n+* The `To` header should not be specified, since it is generated from each recipient's `address` field.\n+* Each header value is expected in the UTF-8 charset without RFC2047 encoding.\n+* Substitution syntax is supported in headers.\n \n-            Authorization: 14ac5499cfdd2bb2859e4476d2e5b1d2bad079bf\n+#### Attachment Object\n \n-    + Body\n+Attachments for a transmission are specified in the `content.attachments` array where each object in the array is described by the following fields:\n \n-        {\n-          \"results\": {\n-            \"total_rejected_recipients\": 0,\n-            \"total_accepted_recipients\": 1,\n-            \"id\": \"11668787484950529\"\n-          }\n-        }\n++ Data Structure: Attributes\n+    + name (string, required) - The filename of the attachment. This is inserted into the filename parameter of the `Content-Disposition` header. Maximum length - 255 bytes\n+    + type (string, required) - The MIME type of the attachment. The value will apply as-is to the `Content-Type` header of the generated MIME part for the attachment. <br /> Include the `charset` parameter, if needed (e.g. `text/html; charset=\"UTF-8\"`) \n+    + data (string, required) - The content of the attachment as a Base64 encoded string. The string should not contain `\\r\\n` line breaks. SparkPost will add line breaks as necessary to ensure the Base64 encoded lines contain no more than 76 characters each.\n++ Sample\n+    ```\n+    {\n+        \"name\": \"billing.pdf\",\n+        \"type\": \"application/pdf\",\n+        \"data\": \"Q29uZ3JhdHVsYXRpb25zLCB5b3UgY2FuIGJhc2U2NCBkZWNvZGUh\"\n+    }\n+    ```\n \n-+ Response 400 (application/json)\n+<banner status=\"danger\">Sending attachments with malicious content is <strong>strictly prohibited</strong> by SparkPost. This includes (and is not limited to) files with `bat` and `exe` extensions.</banner>\n \n-        {\n-          \"errors\" : [\n-            {\n-              \"description\" : \"Unconfigured or unverified sending domain.\",\n-              \"code\" : \"7001\",\n-              \"message\" : \"Invalid domain\"\n-            }\n-          ]\n-        }\n+#### Inline Image Object\n \n-+ Request Create Transmission with Inline RFC822 Content (application/json)\n+Insert inline images into your HTML using `<img src=\"cid:NAME\" />`, where `NAME` is the value you set in the `name` attribute.\n \n-  + Headers\n+Inline images for a transmission are specified in the `content.inline_images` array where each object in the array is described by the following fields:\n \n-            Authorization: 14ac5499cfdd2bb2859e4476d2e5b1d2bad079bf\n++ Data Structure: Attributes\n+    + name (string, required) - The name of the image, which will be inserted into the `Content-ID` header. The name must be unique within the `content.inline_images` array. Maximum length - 255 bytes\n+    + type (string, required) - The MIME type of the image.  The value will apply as-is to the `Content-Type` header of the generated MIME part for the image.\n+    + data (string, required) - The content of the image as a Base64 encoded string. The string should not contain `\\r\\n` line breaks. SparkPost will add line breaks as necessary to ensure the Base64 encoded lines contain no more than 76 characters each.\n++ Sample\n+    ```\n+    {\n+        \"name\": \"my_image.jpeg\",\n+        \"type\": \"image/jpeg\",\n+        \"data\": \"VGhpcyBkb2Vzbid0IGxvb2sgbGlrZSBhIGpwZWcgdG8gbWUh\"\n+    }\n+    ```\n \n-  + Body\n \n-        {\n-          \"options\": {\n-            \"open_tracking\": true,\n-            \"click_tracking\": true,\n-            \"transactional\": false,\n-            \"sandbox\": false,\n-            \"ip_pool\": \"\",\n-            \"inline_css\": false\n-          },\n-          \"description\": \"Christmas Campaign Email\",\n-          \"campaign_id\": \"christmas_campaign\",\n++ Request (application/json)\n \n-          \"metadata\": {\n-            \"user_type\": \"students\",\n-            \"education_level\": \"college\"\n-          },\n+    + Headers\n \n-          \"substitution_data\": {\n-            \"sender\": \"Big Store Team\",\n-            \"holiday_name\": \"Christmas\"\n-          },\n+            Authorization: 14ac5499cfdd2bb2859e4476d2e5b1d2bad079bf\n+\n+    + Body\n \n-          \"recipients\": [\n-            {\n-              \"address\": {\n-                \"email\": \"wilma@flintstone.com\",\n-                \"name\": \"Wilma Flintstone\"\n-              },\n-              \"tags\": [\n-                \"greeting\",\n-                \"prehistoric\",\n-                \"fred\",\n-                \"flintstone\"\n-              ],\n-              \"metadata\": {\n-                \"age\": \"24\",\n-                \"place\": \"Bedrock\"\n-              },\n-              \"substitution_data\": {\n-                \"first_name\": \"Wilma\",\n-                \"customer_type\": \"Platinum\",\n-                \"year\": \"Freshman\"\n-              }\n-            },\n             {\n-              \"address\": {\n-                \"email\": \"abc@flintstone.com\",\n-                \"name\": \"Fred Flintstone\"\n-              },\n-              \"tags\": [\n-                \"greeting\",\n-                \"prehistoric\",\n-                \"fred\",\n-                \"flintstone\"\n-              ],\n-              \"metadata\": {\n-                \"age\": \"33\",\n-                \"place\": \"NY\"\n-              },\n-              \"substitution_data\": {\n-                \"first_name\": \"Fred\",\n-                \"customer_type\": \"Sliver\",\n-                \"year\": \"Senior\"\n-              }\n+                \"options\": {\n+                    \"open_tracking\": true,\n+                    \"click_tracking\": true\n+                },\n+                \"metadata\": {\n+                    \"user_type\": \"students\",\n+                    \"education_level\": \"college\"\n+                },\n+                \"substitution_data\": {\n+                    \"sender\": \"Big Store Team\",\n+                    \"holiday_name\": \"Christmas\"\n+                },\n+                \"recipients\": [\n+                    {\n+                        \"address\": {\n+                            \"email\": \"wilma@flintstone.com\",\n+                            \"name\": \"Wilma Flintstone\"\n+                        },\n+                        \"substitution_data\": {\n+                            \"customer_type\": \"Platinum\",\n+                            \"year\": \"Freshman\"\n+                        }\n+                    }\n+                ],\n+                \"content\": {\n+                    \"from\": {\n+                        \"name\": \"Fred Flintstone\",\n+                        \"email\": \"fred@flintstone.com\"\n+                    },\n+                    \"subject\": \"Big Christmas savings!\",\n+                    \"reply_to\": \"Christmas Sales <sales@flintstone.com>\",\n+                    \"headers\": {\n+                        \"X-Customer-Campaign-ID\": \"christmas_campaign\"\n+                    },\n+                    \"html\": \"<p>Hi {{address.name}} \\nSave big this Christmas in your area {{place}}! \\nClick http://www.mysite.com and get huge discount\\n</p><p>Hurry, this offer is only to {{user_type}}\\n</p><p>{{sender}}</p>\"\n+                }\n             }\n-          ],\n-          \"content\": {\n-            \"email_rfc822\": \"Content-Type: text\\/plain\\r\\nTo: \\\"{{address.name}}\\\" <{{address.email}}>\\r\\n\\r\\n Hi {{first_name}} \\nSave big this Christmas in your area {{place}}! \\nClick http://www.mysite.com and get huge discount\\n Hurry, this offer is only to {{customer_type}}\\n {{sender}}\\r\\n\"\n-          }\n-        }\n \n + Response 200 (application/json)\n \n-  + Body\n-\n-            {\n-              \"results\": {\n+        {\n+            \"results\": {\n                 \"total_rejected_recipients\": 0,\n-                \"total_accepted_recipients\": 2,\n+                \"total_accepted_recipients\": 1,\n                 \"id\": \"11668787484950529\"\n-              }\n             }\n+        }\n \n + Response 400 (application/json)\n \n         {\n-          \"errors\" : [\n-            {\n-              \"description\" : \"Unconfigured or unverified sending domain.\",\n-              \"code\" : \"7001\",\n-              \"message\" : \"Invalid domain\"\n-            }\n-          ]\n+            \"errors\": [\n+                {\n+                    \"description\": \"Unconfigured or unverified sending domain.\",\n+                    \"code\": \"7001\",\n+                    \"message\": \"Invalid domain\"\n+                }\n+            ]\n         }\n \n-+ Request Create Transmission Using CC Header (application/json)\n \n-    + Headers\n+### Send a Template [POST]\n \n-            Authorization: 14ac5499cfdd2bb2859e4476d2e5b1d2bad079bf\n+The following attributes should be set in the `content` object when using a template as the transmission's content:\n \n-    + Body\n++ Data Structure: Content Attributes\n+    + template_id (string, required) - ID of the template to use.\n+    + use_draft_template (boolean) - Whether to use the draft version. If this is set to `true` and no draft exists, the transmission will fail.","path":"content/api/transmissions.apib","position":649,"original_position":649,"commit_id":"77e8f274879e49ea18fd4121088cd35d17c2cb3d","original_commit_id":"77e8f274879e49ea18fd4121088cd35d17c2cb3d","user":{"login":"jgzamora","id":3607539,"node_id":"MDQ6VXNlcjM2MDc1Mzk=","avatar_url":"https://avatars0.githubusercontent.com/u/3607539?v=4","gravatar_id":"","url":"https://api.github.com/users/jgzamora","html_url":"https://github.com/jgzamora","followers_url":"https://api.github.com/users/jgzamora/followers","following_url":"https://api.github.com/users/jgzamora/following{/other_user}","gists_url":"https://api.github.com/users/jgzamora/gists{/gist_id}","starred_url":"https://api.github.com/users/jgzamora/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgzamora/subscriptions","organizations_url":"https://api.github.com/users/jgzamora/orgs","repos_url":"https://api.github.com/users/jgzamora/repos","events_url":"https://api.github.com/users/jgzamora/events{/privacy}","received_events_url":"https://api.github.com/users/jgzamora/received_events","type":"User","site_admin":false},"body":"\"If this is set to `true` and no draft exists, the transmission will fail.\" but is that even possible ","created_at":"2018-07-18T16:00:09Z","updated_at":"2018-07-18T16:05:46Z","html_url":"https://github.com/SparkPost/developers.sparkpost.com/pull/229#discussion_r203436266","pull_request_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/229","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/comments/203436266"},"html":{"href":"https://github.com/SparkPost/developers.sparkpost.com/pull/229#discussion_r203436266"},"pull_request":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/229"}}},"pull_request":{"url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/229","id":200200841,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAwMjAwODQx","html_url":"https://github.com/SparkPost/developers.sparkpost.com/pull/229","diff_url":"https://github.com/SparkPost/developers.sparkpost.com/pull/229.diff","patch_url":"https://github.com/SparkPost/developers.sparkpost.com/pull/229.patch","issue_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues/229","number":229,"state":"open","locked":false,"title":"Migrate transmissions.apib","user":{"login":"avigoldman","id":4924860,"node_id":"MDQ6VXNlcjQ5MjQ4NjA=","avatar_url":"https://avatars1.githubusercontent.com/u/4924860?v=4","gravatar_id":"","url":"https://api.github.com/users/avigoldman","html_url":"https://github.com/avigoldman","followers_url":"https://api.github.com/users/avigoldman/followers","following_url":"https://api.github.com/users/avigoldman/following{/other_user}","gists_url":"https://api.github.com/users/avigoldman/gists{/gist_id}","starred_url":"https://api.github.com/users/avigoldman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avigoldman/subscriptions","organizations_url":"https://api.github.com/users/avigoldman/orgs","repos_url":"https://api.github.com/users/avigoldman/repos","events_url":"https://api.github.com/users/avigoldman/events{/privacy}","received_events_url":"https://api.github.com/users/avigoldman/received_events","type":"User","site_admin":false},"body":"WIP\r\n\r\n- [x] Introduction\r\n- [x] The Sandbox Domain\r\n- [x] Sending Limits\r\n- [x] Transmission Object\r\n- [x] Create a Transmission\r\n  - [x] Request Body\r\n  - [x] Header Notes\r\n  - [x] Using a Stored Recipient List\r\n  - [x] Send Inline Content\r\n  - [x] Send a Template\r\n  - [x] Send an A/B Test\r\n  - [x] Send RFC822 Content\r\n- [x] Scheduled Transmissions\r\n  - [x] Schedule a Transmission\r\n  - [x] Retrieve a Scheduled Transmission\r\n  - [x] Delete a Scheduled Transmission\r\n  - [x] Delete Scheduled Transmissions By Campaign ID\r\n  - [x] List All Scheduled Transmissions","created_at":"2018-07-09T19:47:00Z","updated_at":"2018-07-18T16:05:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7ef1d9a1195afaeb3022d13c0f88a38b85a9cf95","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/229/commits","review_comments_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/229/comments","review_comment_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues/229/comments","statuses_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/statuses/77e8f274879e49ea18fd4121088cd35d17c2cb3d","head":{"label":"SparkPost:transmissions.apib","ref":"transmissions.apib","sha":"77e8f274879e49ea18fd4121088cd35d17c2cb3d","user":{"login":"SparkPost","id":9406778,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk0MDY3Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/9406778?v=4","gravatar_id":"","url":"https://api.github.com/users/SparkPost","html_url":"https://github.com/SparkPost","followers_url":"https://api.github.com/users/SparkPost/followers","following_url":"https://api.github.com/users/SparkPost/following{/other_user}","gists_url":"https://api.github.com/users/SparkPost/gists{/gist_id}","starred_url":"https://api.github.com/users/SparkPost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SparkPost/subscriptions","organizations_url":"https://api.github.com/users/SparkPost/orgs","repos_url":"https://api.github.com/users/SparkPost/repos","events_url":"https://api.github.com/users/SparkPost/events{/privacy}","received_events_url":"https://api.github.com/users/SparkPost/received_events","type":"Organization","site_admin":false},"repo":{"id":41818547,"node_id":"MDEwOlJlcG9zaXRvcnk0MTgxODU0Nw==","name":"developers.sparkpost.com","full_name":"SparkPost/developers.sparkpost.com","owner":{"login":"SparkPost","id":9406778,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk0MDY3Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/9406778?v=4","gravatar_id":"","url":"https://api.github.com/users/SparkPost","html_url":"https://github.com/SparkPost","followers_url":"https://api.github.com/users/SparkPost/followers","following_url":"https://api.github.com/users/SparkPost/following{/other_user}","gists_url":"https://api.github.com/users/SparkPost/gists{/gist_id}","starred_url":"https://api.github.com/users/SparkPost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SparkPost/subscriptions","organizations_url":"https://api.github.com/users/SparkPost/orgs","repos_url":"https://api.github.com/users/SparkPost/repos","events_url":"https://api.github.com/users/SparkPost/events{/privacy}","received_events_url":"https://api.github.com/users/SparkPost/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SparkPost/developers.sparkpost.com","description":"SparkPost Developer Site","fork":false,"url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com","forks_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/forks","keys_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/teams","hooks_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/hooks","issue_events_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues/events{/number}","events_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/events","assignees_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/assignees{/user}","branches_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/branches{/branch}","tags_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/tags","blobs_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/statuses/{sha}","languages_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/languages","stargazers_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/stargazers","contributors_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/contributors","subscribers_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/subscribers","subscription_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/subscription","commits_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/contents/{+path}","compare_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/merges","archive_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/downloads","issues_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues{/number}","pulls_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls{/number}","milestones_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/milestones{/number}","notifications_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/labels{/name}","releases_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/releases{/id}","deployments_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/deployments","created_at":"2015-09-02T18:15:58Z","updated_at":"2018-07-17T19:02:34Z","pushed_at":"2018-07-18T06:34:15Z","git_url":"git://github.com/SparkPost/developers.sparkpost.com.git","ssh_url":"git@github.com:SparkPost/developers.sparkpost.com.git","clone_url":"https://github.com/SparkPost/developers.sparkpost.com.git","svn_url":"https://github.com/SparkPost/developers.sparkpost.com","homepage":"https://developers.sparkpost.com","size":41151,"stargazers_count":3,"watchers_count":3,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":9,"license":null,"forks":4,"open_issues":9,"watchers":3,"default_branch":"develop"}},"base":{"label":"SparkPost:next","ref":"next","sha":"aa62601aeb2604a853d8b2bae908d0ad2d398c47","user":{"login":"SparkPost","id":9406778,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk0MDY3Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/9406778?v=4","gravatar_id":"","url":"https://api.github.com/users/SparkPost","html_url":"https://github.com/SparkPost","followers_url":"https://api.github.com/users/SparkPost/followers","following_url":"https://api.github.com/users/SparkPost/following{/other_user}","gists_url":"https://api.github.com/users/SparkPost/gists{/gist_id}","starred_url":"https://api.github.com/users/SparkPost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SparkPost/subscriptions","organizations_url":"https://api.github.com/users/SparkPost/orgs","repos_url":"https://api.github.com/users/SparkPost/repos","events_url":"https://api.github.com/users/SparkPost/events{/privacy}","received_events_url":"https://api.github.com/users/SparkPost/received_events","type":"Organization","site_admin":false},"repo":{"id":41818547,"node_id":"MDEwOlJlcG9zaXRvcnk0MTgxODU0Nw==","name":"developers.sparkpost.com","full_name":"SparkPost/developers.sparkpost.com","owner":{"login":"SparkPost","id":9406778,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk0MDY3Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/9406778?v=4","gravatar_id":"","url":"https://api.github.com/users/SparkPost","html_url":"https://github.com/SparkPost","followers_url":"https://api.github.com/users/SparkPost/followers","following_url":"https://api.github.com/users/SparkPost/following{/other_user}","gists_url":"https://api.github.com/users/SparkPost/gists{/gist_id}","starred_url":"https://api.github.com/users/SparkPost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SparkPost/subscriptions","organizations_url":"https://api.github.com/users/SparkPost/orgs","repos_url":"https://api.github.com/users/SparkPost/repos","events_url":"https://api.github.com/users/SparkPost/events{/privacy}","received_events_url":"https://api.github.com/users/SparkPost/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SparkPost/developers.sparkpost.com","description":"SparkPost Developer Site","fork":false,"url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com","forks_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/forks","keys_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/teams","hooks_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/hooks","issue_events_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues/events{/number}","events_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/events","assignees_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/assignees{/user}","branches_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/branches{/branch}","tags_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/tags","blobs_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/statuses/{sha}","languages_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/languages","stargazers_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/stargazers","contributors_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/contributors","subscribers_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/subscribers","subscription_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/subscription","commits_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/contents/{+path}","compare_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/merges","archive_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/downloads","issues_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues{/number}","pulls_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls{/number}","milestones_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/milestones{/number}","notifications_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/labels{/name}","releases_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/releases{/id}","deployments_url":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/deployments","created_at":"2015-09-02T18:15:58Z","updated_at":"2018-07-17T19:02:34Z","pushed_at":"2018-07-18T06:34:15Z","git_url":"git://github.com/SparkPost/developers.sparkpost.com.git","ssh_url":"git@github.com:SparkPost/developers.sparkpost.com.git","clone_url":"https://github.com/SparkPost/developers.sparkpost.com.git","svn_url":"https://github.com/SparkPost/developers.sparkpost.com","homepage":"https://developers.sparkpost.com","size":41151,"stargazers_count":3,"watchers_count":3,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":9,"license":null,"forks":4,"open_issues":9,"watchers":3,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/229"},"html":{"href":"https://github.com/SparkPost/developers.sparkpost.com/pull/229"},"issue":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues/229"},"comments":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/issues/229/comments"},"review_comments":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/229/comments"},"review_comment":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/pulls/229/commits"},"statuses":{"href":"https://api.github.com/repos/SparkPost/developers.sparkpost.com/statuses/77e8f274879e49ea18fd4121088cd35d17c2cb3d"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jgzamora"}}