{"componentChunkName":"component---src-pages-release-notes-js","path":"/release-notes/","result":{"data":{"allContentfulReleaseNotesNote":{"nodes":[{"id":"d90dcedc-2f3e-5609-a49d-fd274a25b436","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We've started writing over the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"campaign_id\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"outreach_id\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" values on \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/ecommerce-orders/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Orders\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to align with \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/help/about-mailchimp-attribution/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"our new attribution model\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" and user-configured settings. If your integration is sending \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"campaign_id\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"outreach_id\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" with \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/ecommerce-orders/add-order/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Add Order\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/ecommerce-orders/update-order/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Update Order\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" API calls, we recommend deprecating that logic.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’re rolling out \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/help/about-mailchimp-attribution/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Mailchimp's native attribution model\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" across all e-commerce integrations. This new model gives you more complete insights into how marketing campaigns contribute to customer purchases. It also improves marketing performance reporting for all Mailchimp customers using e-commerce integrations. Additionally, this reduces the need for complex custom logic for attributing orders to specific marketing messages.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 6, 2024","title":"Overwriting campaign_id and outreach_id","slug":"overwriting-campaign_id-and-outreach_id","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"786ad09e-2013-52a3-811d-a52239b7b5c0","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve increased the number of times that a webhook will retry when we don’t initially receive a 200 response. We will now retry up to 20 times, at intervals of 15-25 minutes per retry. After 20 unsuccessful attempts, the webhook will be disabled.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Increasing this interval gives users more time to troubleshoot their webhook endpoint, and retains the webhook payload for longer. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"June 17, 2024","title":"Webhook retry interval increased","slug":"webhook-retry-interval-increased","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"b2db61d9-32d5-549d-bbac-f29dfc708bc1","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"We've published an \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"data\":{\"uri\":\"https://packagist.org/packages/mailchimp/transactional#1.0.57\"},\"content\":[{\"nodeType\":\"text\",\"value\":\"updated package for the PHP client library\",\"marks\":[],\"data\":{}}]},{\"nodeType\":\"text\",\"value\":\" that is compatible with PHP 8.2.\",\"marks\":[],\"data\":{}}]},{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"We've also published an \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"data\":{\"uri\":\"https://www.npmjs.com/package/@mailchimp/mailchimp_transactional/v/1.0.59\"},\"content\":[{\"nodeType\":\"text\",\"value\":\"updated package for the Node.js client\",\"marks\":[],\"data\":{}}]},{\"nodeType\":\"text\",\"value\":\" library that uses the latest version of Axios to address a security vulnerability.\",\"marks\":[],\"data\":{}}]}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Older versions of the PHP client library caused errors when used with PHP 8.2.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A vulnerability was found in versions 0.8.1 through 1.5.1 of Axios, which unintentionally exposed the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"XSRF-TOKEN\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" that was stored in cookies by including it in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"X-XSRF-TOKEN\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" HTTP header for all requests to any host. This allowed malicious actors possible access to sensitive data. To address this issue, we have updated the Node.js client library to use the latest version of Axios.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 12, 2024","title":"Updated Mailchimp Transactional client libraries","slug":"updated-mailchimp-transactional-php-client-library","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"12ee081a-37e8-50a4-aead-e2c078fc59f9","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"As of July 18, 2023, Mailchimp Transactional no longer supports Transport Layer Security protocol (TLS) v1.0 and v1.1. We already support TLS v.1.2 and above. If you're not using TLS v1.2 or above, this may require coding changes.\",\"marks\":[],\"data\":{}}]},{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"\\n\",\"marks\":[],\"data\":{}}]}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"TLS v1.0 and v.1.1 have been sunsetted so we are making the corresponding changes.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":"July 2023","formattedPublishDate":"June 5, 2023","title":"Retiring legacy versions of Transport Layer Security (TLS) protocol","slug":"retiring-legacy-versions-of-transport-layer-security-tls-protocol","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"ad5447ad-88c2-53d7-bda3-7e55c9a96557","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Beginning on March 15, 2024, we'll be enforcing new sending domain authentication requirements that you'll need to act on.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Google and Yahoo recently announced new sending requirements that will go into effect soon. To comply with these changes, Mailchimp Transactional users will have to update their DKIM records and enact a DMARC policy on any sending domain that might be used. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"If you fail to update your domain’s authentication, we’ll use a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"mandrillapp.com\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" subdomain as the sending domain for your email address, but replies from recipients will still go to your email address. This change will apply to any email sent through Mandrill that is currently authenticated but doesn't meet our new authentication requirements after March 15.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Here's how you can get started:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"bold\"}],\"value\":\"DKIM\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Create two CNAME records: one with the name \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"mte1._domainkey.\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"},{\"type\":\"code\"}],\"value\":\"yourdomain.com\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" with the value \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"},{\"type\":\"code\"}],\"value\":\"dkim1.mandrillapp.com\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", and another with the name \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"mte2._domainkey.\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"},{\"type\":\"code\"}],\"value\":\"yourdomain.com \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"and the value \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"},{\"type\":\"code\"}],\"value\":\"dkim2.mandrillapp.com\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"bold\"}],\"value\":\"DMARC\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Create and save a TXT record in your DNS with a name of \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"_dmarc.\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"},{\"type\":\"code\"}],\"value\":\"yourdomain.com\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and a value of \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"},{\"type\":\"code\"}],\"value\":\"v=DMARC1; p=none\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Replace \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"italic\"},{\"type\":\"code\"}],\"value\":\"yourdomain.com\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" with the domain you're setting up. Some domain hosts automatically add \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"yourdomain.com\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" after the initial value—contact your domain provider for any specifics.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve updated the Mailchimp Transactional app and documentation to include these instructions, and to give you the ability to test these records on your Sending Domains page. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":"January, 2024","formattedPublishDate":"December 19, 2023","title":"New sending domain authentication requirements","slug":"new-sending-domain-authentication-requirements","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"b270d456-47f9-53ae-b894-a19650a30367","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve been updating our API responses recently to provide a more semantic response for the requests you make. With this release, we’re changing the way our API responds if you provide an invalid template name when requesting template information or if you try to send a message using a template that doesn’t exist. Once this change goes live, we’ll respond with an HTTP 404 Not Found. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"If you’re specifically targeting HTTP response codes other than 200, you may need to update your code. We’re releasing this change incrementally over the next few weeks.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, we responded with an HTTP 500 Server Error when you provided an invalid template name or slug. We’re updating this to bring our response in line with proper semantics and allow more efficient status monitoring.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"June 17, 2023","title":"Response code updated for invalid template name","slug":"response-code-updated-for-invalid-template-name","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"1020790e-565a-5c60-aa1e-bc80c9627bb8","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve been updating our API responses recently to provide a more semantic response for the requests you make. With this release, we’re changing the way our servers respond if you provide invalid or missing data when performing a request to our API. Once this change goes live, we’ll respond with an \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"HTTP 400 Bad Request\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", indicating you will have to make changes to your payload in the subsequent requests. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"If you’re specifically targeting HTTP response codes other than \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"200\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", you may need to update your code. We’re releasing this change incrementally over the next few weeks.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, we responded with an \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"HTTP 500 Server Error\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" when you provided an invalid or missing payload. We’re updating this to bring our response in line with proper semantics and allow more efficient status monitoring.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 3, 2023","title":"Changing API server response for client errors","slug":"changing-api-server-response-for-client-errors","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"539f1d3e-2f8f-5785-a5f2-cc67bbf428c7","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We retired API Export 1.0 and API 2.0 on June 1, 2023.  We won’t support calls to these endpoints after the retirement date and will return an HTTP 410 status message. If your application or integration still makes use of these endpoints, you’ll need to update it to our Marketing API 3.0.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We deprecated API Export 1.0 and API 2.0 on December 31, 2016 and have encouraged our developer community to upgrade to API 3.0 in the intervening time. Although we've continued to support the deprecated endpoints, they've seen increasing performance issues and it’s no longer viable to maintain them.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"June 1, 2023","title":"Export API 1.0 and API 2.0 no longer supported","slug":"export-api-1-0-and-api-2-0-no-longer-supported","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"85d41bab-b299-50a3-9c16-e0f23079c67b","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"We’ve been updating our API responses recently to provide a more semantic response for the requests you make. With this release, our servers will respond an HTTP 404 Not Found if you provide an invalid message ID when requesting message information. \",\"marks\":[],\"data\":{}}]},{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"If you’re specifically targeting HTTP response codes other than 200, you may need to update your code. \",\"marks\":[],\"data\":{}}]}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, we responded with an HTTP 500 Server Error when you provided an invalid message ID. We’re updating this to bring our response in line with proper semantics and allow more efficient status monitoring.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":"May 2023","formattedPublishDate":"April 14, 2023","title":"Changing messages/info server response","slug":"changing-messages-info-server-response","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"da754f7f-abe3-5656-aeb2-6a3a9beab728","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We've added functionality to allow you to rotate any client secrets you may have generated for your applications.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We added this functionality to make it easier to keep your applications secure. For more details, see \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/guides/access-user-data-oauth-2/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Access Data on Behalf of Other Users with OAuth 2\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 20, 2023","title":"Added client secret rotation functionality","slug":"added-client-secret-rotation-functionality","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"e8eb9506-6c7a-5349-931e-7c423d144a81","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"We’ve recently updated how we encode email headers, so that Subject Lines and the recipient headers (like TO, CC, etc) no longer require users to encode non-ASCII characters.\\n\",\"marks\":[],\"data\":{}}]}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We made this change to make it easier for users to send emoji or non-standard text in the Subject, To Address, and To Name. Now, you can pass in those characters directly instead of having to encode them in your email. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 19, 2023","title":"Subject and TO header no longer require encoding","slug":"subject-and-to-header-no-longer-require-encoding","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"9e3c39af-5e4b-5a90-82c4-9873d6d398ae","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’re now enforcing the message search rate limit described in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/transactional/api/messages/search-messages-by-date/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Search messages by date\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint. If you exceed the limit of 20 searches per minute, we’ll now return a 429 Too Many Requests response code. You can retry your request 60 seconds after you sent the first of the original 20 requests.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"You may want to monitor your responses for an increase in 429 codes so that you can change your request system to submit no more than 20 searches per minute if necessary.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’re enforcing the search request limit to increase system efficiency and minimize overall response time.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 10, 2023","title":"Message search rate limit now enforced","slug":"message-search-rate-limit-now-enforced","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"e333f2e3-f0cc-56d8-bdb5-cbb0fc92482a","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’re now supporting the 401 Unauthorized response code. When a customer makes a request using any invalid or revoked API Key, we’ll respond with 401 Unauthorized. If you’re specifically targeting HTTP response codes other than 200, you may need to update your code. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, we responded to requests made with an invalid or revoked API key with a 500 Server Error status code. We updated this to bring our response in line with proper semantics and allow more efficient status monitoring.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":"March, 2023","formattedPublishDate":"February 23, 2023","title":"Added support for 401 Unauthorized response code","slug":"added-support-for-401-unauthorized-response-code","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"5e52b784-1f88-53e4-b63b-baf90e266b87","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Export notification emails now include a link that prompts you to login to your Mailchimp account before you can download your report from the Exports page. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, our export emails contained a direct link to download the report. We’ve updated our security to require login before you can access the report on the Exports page.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 21, 2023","title":"Updated export download security","slug":"updated-export-download-security","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"47c8f708-1fd4-5fbd-a097-3a7ea129863a","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We added an empty alt tag to the pixel that is included in your emails when you’ve enabled open tracking.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Many spam filters like to see alt tags included for all images, but we’re leaving the one associated with the open tracking pixel empty so that screen readers won’t see it. This helps keep your email from being marked as spam while not creating a poor user experience for your customers who use screen readers.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"January 12, 2023","title":"Added empty alt tag to tracking pixels","slug":"added-empty-alt-tag-to-tracking-pixels","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"555bfdd0-1eb3-59e4-9d36-66844ef2e550","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"We’re now checking the fields \",\"marks\":[],\"data\":{}},{\"nodeType\":\"text\",\"value\":\"ip_signup\",\"marks\":[{\"type\":\"code\"}],\"data\":{}},{\"nodeType\":\"text\",\"value\":\" and \",\"marks\":[],\"data\":{}},{\"nodeType\":\"text\",\"value\":\"ip_opt\",\"marks\":[{\"type\":\"code\"}],\"data\":{}},{\"nodeType\":\"text\",\"value\":\" for valid IPv4 and IPv6 addresses when you’re using the \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/list-members/add-or-update-list-member/\"},\"content\":[{\"nodeType\":\"text\",\"value\":\"Add or Update List Member\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}]},{\"nodeType\":\"text\",\"value\":\" endpoint.\\n\",\"marks\":[],\"data\":{}}]}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We added IP validation to the contact importer and we are updating the API to maintain feature parity. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"September 1, 2022","title":"IP validation now enforced on Add or Update List Member","slug":"ip-validation-now-enforced-on-add-or-update-list-member","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"68a7db3e-d2f3-5a94-9997-2e533f6080ee","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve added two docs that describe how you can contribute to Open Commerce:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/open-commerce/docs/contribute-open-commerce/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Contributing to Open Commerce\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/open-commerce/docs/git-formatting-conventions/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Open Commerce Git Formatting Conventions\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"We’re committed to the open source community and these documents explain the processes and standards we use so you can more easily contribute to the project. \",\"marks\":[],\"data\":{}}]}]}"},"whenText":null,"formattedPublishDate":"December 20, 2022","title":"Added docs around contributing to Open Commerce ","slug":"added-docs-around-contributing-to-open-commerce","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"c4b1da7b-5ea1-52c8-a8f9-c84377ba5dd4","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve add a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"queued-reason\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field to API responses when we return a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"status\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" of \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"queued.\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This change affects the following endpoints:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"messages/send\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"messages/send-template\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"messages/send-raw\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This new \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"queued-reason\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field gives you more information and context why messages have been queued rather than sent.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 8, 2022","title":"Added a field to various Transactional responses when messages are queued","slug":"added-a-field-to-various-transactional-responses-when-messages-are-queued","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"7409110a-acf1-513c-99c3-b2b9f73b68c7","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve written a new CLI so you can start developing your Open Commerce projects more easily. Now, you only need a simple command to create your project, create a custom plugin, or add the Open Commerce admin and storefront to the project. Check out all the commands at the  \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/cli/blob/trunk/README.md\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"CLI ReadMe\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" or by running \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"reaction help\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" in your terminal. Or, see our \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/open-commerce/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"guides and documentation\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for more details. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Getting started or completing routine workflows with Open Commerce had become slow and cumbersome due to excessive memory use and device slowdowns. With the new CLI, you can run the API, storefront and admin applications independently, which frees up memory and improves performance.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 17, 2022","title":"Added new command line interface","slug":"added-new-command-line-interface","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"871db414-10e0-5702-94d3-64374bd3d946","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve added a limit to how far in the future you can schedule messages. Currently, we’re allowing you to schedule messages within a year from the date of scheduling.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This validation change affects the following APIs:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"messages/send\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"messages/sendRaw\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"messages/sentTemplate\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"messages/reschedule\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’re adding this validation limit to increase database efficiency and performance.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 6, 2022","title":"Added time limit to message scheduling","slug":"added-time-limit-to-message-scheduling","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"8a150253-97b6-5905-9c46-cd280b0bd262","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/lists/batch-subscribe-or-unsubscribe/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Batch Subscribe\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint now accepts ‘\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"transactional\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"’ as a possible status value.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"Previously, the Batch Subscribe endpoint did not accept ‘\",\"marks\":[],\"data\":{}},{\"nodeType\":\"text\",\"value\":\"transactional\",\"marks\":[{\"type\":\"code\"}],\"data\":{}},{\"nodeType\":\"text\",\"value\":\"’ in the \",\"marks\":[],\"data\":{}},{\"nodeType\":\"text\",\"value\":\"status\",\"marks\":[{\"type\":\"code\"}],\"data\":{}},{\"nodeType\":\"text\",\"value\":\" field, which did not match the behavior of adding an individual list member. This change allows you to add transactional list members using the Batch Subscribe endpoint moving forward.\",\"marks\":[],\"data\":{}}]},{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"\\n\",\"marks\":[],\"data\":{}}]}]}"},"whenText":null,"formattedPublishDate":"August 2, 2022","title":"Added transactional as an accepted status for Batch Subscribe","slug":"added-transactional-accepted-status-for-batch-subscribe","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"a7d4f333-60cc-5127-a33a-878f5a4892ad","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve added “\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"field\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"” and “\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"field_message\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"” to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/lists/batch-subscribe-or-unsubscribe/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Batch Subscribe\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" error response. You’ll see data in these fields when a merge field error is encountered.\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, when you encountered a merge field error during a Batch Subscribe operation, you didn’t see any details about the field in the error. This can cause headaches when you’re troubleshooting a remedy.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"These additional fields, when present, should provide more insight into how to resolve an issue.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 3, 2022","title":"Additional fields added to Batch Subscribe error response","slug":"additional-fields-added-to-batch-subscribe-error-response","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"903cfbf1-e169-53d4-b401-88ed5b02a049","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"data\":{},\"content\":[{\"nodeType\":\"text\",\"value\":\"We've added various endpoints to pull reports for a survey. You can start by viewing \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/reporting-surveys/\"},\"content\":[{\"nodeType\":\"text\",\"value\":\"all surveys\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}]},{\"nodeType\":\"text\",\"value\":\" or export high-level results from the \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/reporting-surveys-questions/\"},\"content\":[{\"nodeType\":\"text\",\"value\":\"Survey Questions\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}]},{\"nodeType\":\"text\",\"value\":\". You can also pull \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/reporting-surveys-responses/get-survey-response/\"},\"content\":[{\"nodeType\":\"text\",\"value\":\"individual Survey Responses\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}]},{\"nodeType\":\"text\",\"value\":\" to get more detail.\",\"marks\":[],\"data\":{}}]}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Many of you have asked for a way to pull survey results via the Mailchimp Marketing API, and now there are various endpoints to help you do this. \\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 25, 2022","title":"Added Survey Reporting","slug":"added-survey-reporting","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"045d02fc-a05f-5f1b-9a84-ef54450bd8ab","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"When Transactional Demo users go over their inbound quota, we now return a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"500\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" status code along with the message “Your inbound message quota has been exceeded. Please try again later.”\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, we were returning a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"200\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" message and not processing the webhook. Now that an error is returned, the API response is more clear.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 17, 2022","title":"Error displayed for Transactional Demo users who are over their inbound quota","slug":"error-displayed-for-transactional-demo-users-who-are-over-their-inbound","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"b58b150d-e73a-5d04-aa0d-baca18f8c0a2","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve added a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"delivered\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" webhook event that will trigger when we receive a successful SMTP response from the receiving server. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"You receive a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"send\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" event when the message reaches our system, a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"deferral \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"event if the message is deferred by the receiving server, and a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"bounce\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" event if it eventually bounces. Now, we’ve added \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"delivered\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" as confirmation that the receiving server has responded successfully. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 1, 2022","title":"Added new webhook event type","slug":"added-new-webhook-event-type","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"995e8c94-04ab-501f-be20-bca3927870fe","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"When syncing members in bulk via the Lists endpoint, tags are now properly added to existing members. If you would like to completely replace the tags of a member with the tags being passed in the request, we have added a new boolean param \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"sync_tags\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", which will cause the call to replace any tags on the existing member. This will only work when making the call with \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updated_existing\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" set to true.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, when updating members in bulk via the Lists or Members endpoints, tags would not be added to an existing member. There was also no way to overwrite the tags completely.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"January 24, 2022","title":"Added ability to sync tags to existing members","slug":"added-ability-sync-tags-existing-members","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"fdf15a0c-875c-52d3-910f-9e3a3753f4c7","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We now allow a user to submit up to 500 pending API batches. For each completed batch, we send those results to each batch webhook that has been created. A user will not be able to create more API batches if there are 500 outstanding batch webhooks that have yet to complete. A 429 status code will be returned in this instance.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, we did not have a limit on how many batch webhooks could be instantiated for a given user. This unbounded nature can have an impact on the performance of the API, which this new limit will help mitigate.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 16, 2021","title":"Batch API limit now considers pending batch webhooks","slug":"batch-api-limit-now-considers-pending-batch-webhooks","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"65eea7f9-d252-528a-8ddf-fb86b79e8309","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In the past, our implementation of Handlebars did not support camelCase, so all variables had to be written using all lowercase letters or using snake_case. Using camelCase for variable names is now supported.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A large portion of developers using the Handlebars templating engine are used to the JavaScript convention of writing variables in camelCase.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 29, 2021","title":"Added camelCase support to Handlebars","slug":"added-camelcase-support-handlebars","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"7527fe75-fb64-5946-99a7-2a1010485464","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"​​We fixed an issue that was causing the Rejection Denylist page to appear as blank.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Expired entries were appearing on the Rejection Denylist page, which pushed out active entries and made the list appear empty. Now only active entries appear.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 4, 2021","title":"Fixed Rejection Denylist display","slug":"fixed-rejection-denylist-display","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"017c4252-1fa2-5c4a-8dae-05b8fcb5d018","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve created a new Stripe plugin, \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/api-plugin-payments-stripe-sca\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"},{\"type\":\"code\"}],\"value\":\"api-plugin-payments-stripe-sca\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", and we recommend that all users of the existing Stripe plugin migrate to it. \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/api-plugin-payments-stripe/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"},{\"type\":\"code\"}],\"value\":\"api-plugin-payments-stripe\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" is now deprecated and will be supported until October 31, 2021. This release also affects the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/example-storefront\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"},{\"type\":\"code\"}],\"value\":\"example-storefront\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" repository, which now includes components to support 3D Secure validation. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Thanks to contributor Janus Reith for his input.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The new plugin is designed to comply with the current \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://stripe.com/docs/strong-customer-authentication\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Strong Customer Authentication (SCA) regulation\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", part of PSD2 regulation in Europe, which requires changes to how your European customers authenticate online payments.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 1, 2021","title":"Added Stripe SCA payments plugin","slug":"added-stripe-sca-payments-plugin","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":true},{"id":"37c51461-fa4c-5cd1-b70c-b091c9ebb66d","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve added a new series of \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/transactional/api/allowlists/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Allowlists endpoints\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" that are functionally identical to the Whitelists endpoints, but use new inclusive terminology instead. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In an effort to move towards using more inclusive terminology in our application, we’ve changed all instances of the terms “blacklist” and “whitelist” to “denylist” and “allowlist,” respectively. There may still be lingering uses of the old terminology in API responses or webhooks; please know that we are working on retiring all instances of those terms.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"September 23, 2021","title":"Added new Allowlists series of endpoints","slug":"added-new-allowlists-endpoints","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"5a0b63bc-a7e3-5c9d-9bc2-ff2bc8b53ea3","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"When deleting an API key or removing an authorized app connection, we will remove the batch webhooks created by that key or connection.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"When a batch job completes, we send that response body to all created webhooks. Previously, these batch webhooks weren’t cleaned up when a user disconnected from an authorized app, or removed an API key.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"September 22, 2021","title":"Cleaning up batch webhooks when deleting API keys or app connections","slug":"cleaning-up-batch-webhooks-deleting-api-keys-app-connections","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"7a1510ed-6f65-56fb-a081-214c57218518","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Apple is launching Apple Mail Privacy Protection, which may change campaign reporting data. Check out our \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/mail-privacy-protection/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Apple Mail Privacy Protection Resources\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for more.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The Apple Mail Privacy Protection changes coming in iOS 15 will change Mailchimp’s email tracking for iOS users who opt in. Check our \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/help/apple-privacy-faq/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"FAQ\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", but you may want to review how you use data and features related to opens and user location. If you surface this data in your integration, we recommend providing context on Apple’s changes.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"September 14, 2021","title":"Data changes with Apple Mail Privacy Protection","slug":"data-changes-apple-mail-privacy-protection","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"},{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"6af880d5-231d-582d-8550-c0aad0dc0268","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"We’ve added a limit to the number of batch webhooks you can create: going forward, you will not be able to exceed 20 batch webhooks for a given Mailchimp account. If you attempt to create a new batch webhook via the \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"POST \",\"marks\":[{\"type\":\"underline\"}],\"data\":{}},{\"nodeType\":\"text\",\"value\":\"/batch-webhooks\",\"marks\":[{\"type\":\"underline\"},{\"type\":\"code\"}],\"data\":{}}],\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/batch-webhooks/add-batch-webhook/\"}},{\"nodeType\":\"text\",\"value\":\" endpoint and have already exceeded the limit, a 400 status code will be returned. In order to resolve this error, you will have to delete an existing batch webhook via the \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"DELETE \",\"marks\":[{\"type\":\"underline\"}],\"data\":{}},{\"nodeType\":\"text\",\"value\":\"/batch-webhooks\",\"marks\":[{\"type\":\"underline\"},{\"type\":\"code\"}],\"data\":{}}],\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/batch-webhooks/delete-batch-webhook/\"}},{\"nodeType\":\"text\",\"value\":\" endpoint.\",\"marks\":[],\"data\":{}}],\"data\":{}}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Most users of the Batch Webhooks endpoint create fewer than 20 webhooks for their account. Allowing an unlimited number of webhooks for each account can have performance implications for the API.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"September 7, 2021","title":"Adding a limit to Batch Webhooks","slug":"adding-limit-batch-webhooks","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"a88a5cf7-a2de-50fc-a43a-d56ad0b6f368","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Version 4.0 of Mailchimp Open Commerce removes the Hydra and Identity services from the development platform. The authentication APIs are now part of the GraphQL server.\",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Store implementers now need to create their own signup and login interfaces using \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"accounts-js\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"https://www.accountsjs.com/\"}},{\"nodeType\":\"text\",\"value\":\". All existing users will be logged out, but their login credentials should carry over and they shouldn’t have to update their passwords.\",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Implementers who need Hydra should continue using version 3.x.\",\"marks\":[],\"data\":{}}],\"data\":{}}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Identity and Hydra enabled OAuth 2 authentication and created a single authentication service for both the storefront and the admin dashboard. These services were hard to deploy and overkill for developers who wanted to get Open Commerce up and running quickly. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Reducing the number of default services should make it easier to use and extend Open Commerce. This is part of a broader plan to use libraries for the storefront and admin dashboard user interfaces. Under this plan, the development platform will provide an integration layer, rather than the services themselves.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Removing Hydra and Identity also reduces the footprint of Meteor, bringing us closer to our goal of completely eliminating Meteor from the codebase.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 25, 2021","title":"Removed Hydra and Identity services from the development platform","slug":"removed-hydra-identity-services-development-platform","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":true},{"id":"54728105-a2e2-5a97-987d-b37734f9e901","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"You can now remove the tracking slugs for \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"google_analytics\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"clicktale\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" when you \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/campaigns/update-campaign-settings/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"update Campaign tracking\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" by passing in an empty string.\\n\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"There was a bug that caused empty strings to be ignored when setting these properties. We’ve fixed updating Campaigns to properly handle these fields: no change if they’re not included in the PATCH body, but removed if they’re passed in as an empty string.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 25, 2021","title":"Removing Campaign tracking tags","slug":"removing-campaign-tracking-tags","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"e51a450f-ea39-52dc-a3eb-b5c96c4d4459","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"You can now verify your domain via TXT record. A new API parameter, \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"verify_txt_key\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", was added to several \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/senders\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" endpoints, which can be appended to \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"mandrill_verify.\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and added to your domain’s TXT records. More details can be found in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/transactional/docs/authentication-delivery/#verify-domain-ownership\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Authentication and Delivery docs\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We previously offered a single method to verify your domain—via a link in an email—but some domains or subdomains may not have an inbox configured, or the email could have trouble arriving. With this additional method, domains can be verified by adding a TXT record alongside SPF and DKIM.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 24, 2021","title":"Domain verification via TXT record ","slug":"domain-verification-via-txt-record","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"225017a8-aa2c-5dd5-90b1-aa1ca1628466","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"API requests for write operations (create, update, delete) to \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/docs/e-commerce/#stores\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"E-Commerce Stores\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" representing Mailchimp Stores will respond with a 4XX error status.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, writes to Mailchimp Stores via the API would succeed, at least temporarily. However, since this data is synced automatically from the Mailchimp Stores feature itself, any changes made via the API would eventually be overwritten by the data synchronization mechanism.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 19, 2021","title":"Mailchimp Stores read-only in API","slug":"mailchimp-stores-read-only-api","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"00e04423-f5f1-596a-abdf-6bd34048948b","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"You can now select multiple entries on the \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Tags\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{\"uri\":\"https://mandrillapp.com//tags\"}},{\"nodeType\":\"text\",\"value\":\" page in the Mailchimp Transactional app and delete them in bulk.\",\"marks\":[],\"data\":{}}],\"data\":{}}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, you had to delete tags one at a time and confirm each deletion in a dialog box, which was time-consuming.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 12, 2021","title":"Added ability to delete multiple tags","slug":"added-ability-delete-multiple-tags","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"70735065-e8a1-5c74-b474-af53ed36ace7","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/ecommerce-orders/list-account-orders/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"},{\"type\":\"code\"}],\"value\":\"/ecommerce/orders\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint now accepts \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"tracking_number\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"tracking_carrier\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"tracking_url\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"}],\"value\":\" \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"fields for an order’s shipment-tracking details.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This addition is in preparation for a future feature to notify shoppers of the tracking number, carrier (e.g. USPS, FedEx), and tracking URL for their orders. You can populate these fields in advance so they are ready to use when classic automations fully support them.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 12, 2021","title":"Added shipment-tracking fields to orders endpoint","slug":"added-shipment-tracking-fields-orders-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"cb30c3bc-b988-5181-a5a6-0f100bf6e669","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Bounces returned from \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/email-activity-reports/list-email-activity/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Email Activity\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" will have a full timestamp, and can be filtered with more granular timing using the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"since\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameter.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Our bounces would return the day of the bounce in their timestamp, but no specific time information. We’ve fixed it so bounces return the detailed time.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 27, 2021","title":"Full timestamp for bounces","slug":"full-timestamp-for-bounces","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"dfa8e563-664f-51ad-a6a0-88b58e405e25","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, when an HTTP request was sent to the Marketing API, we redirect it to HTTPS. We’ve now stopped redirecting these requests and will instead return an HTTP 426 error code indicating the request needs to use HTTPS.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Users with affected API keys or Authorized Apps should have received an email about the change.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Although the Marketing API only accepts HTTPS requests, providing a redirect meant it still supported sending an initial HTTP request that transmitted a user’s sensitive information in plaintext. Returning a 426 error with the appropriate message helps ensure integrations are sending their requests securely.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 27, 2021","title":"No longer redirecting HTTP requests","slug":"no-longer-redirecting-http-requests","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"afd3a966-2566-53d7-9345-4ec6100002e2","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, when using the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/open-reports/list-campaign-open-details/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"},{\"type\":\"code\"}],\"value\":\"/reports/{campaign_id}/open-details/\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint within a \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/batch-operations/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"batch operation\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", you could get an \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"Unknown Filter\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" error if you had more than 1,000 entries in the collection, or if you submitted query parameters other than since.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The endpoint was not correctly handling parameters, and would throw the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"Unknown Filter\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" exception in cases when it should not. We removed this exceptional case, and will now ignore unexpected query parameters. Batch requests using this endpoint should now resolve successfully.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 22, 2021","title":"Open Details reporting now handles query parameters correctly","slug":"open-details-reporting-now-handles-query-parameters-correctly","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"45db5531-9336-58b3-850b-0f5deb87a91a","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve started providing more specific error messaging when adding or updating e-commerce customers.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, when managing e-commerce customers, the API would sometimes return a vague error with the message, “Your request could not be processed.” \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed these errors to be more actionable. The large majority are related to email validation and will look like:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"{\\n  \\\"title\\\": \\\"Customer Was Not Saved\\\",\\n  \\\"status\\\": 400,\\n  \\\"detail\\\": \\\"invalid@gmaill.con is an invalid email address and cannot be imported.\\\",\\n}\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 19, 2021","title":"Descriptive errors when adding E-commerce customers","slug":"descriptive-errors-adding-e-commerce-customers","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"3de34cfa-fb34-590f-9765-2e4ee77b8c4b","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/ecommerce-carts/list-carts/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List carts\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" now returns the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"created_at\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updated_at\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" dates for each cart.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We had a bug where \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"created_at\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updated_at\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" were blank strings for each cart in the list of carts.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 14, 2021","title":"List carts returns the created and updated date","slug":"list-carts-returns-created-updated-date","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"86a16afe-c8ee-585c-b46b-9c01f277fafe","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a bug in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"report_summary\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" section of the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/campaigns/get-campaign-info/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"individual campaigns endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for parent automation and variate campaigns. Previously, we reported 0 total clicks for those campaign types; now we will report the sum of clicks between the child campaigns.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This falls in line with the expected behavior elsewhere in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"report_summary\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" section for other stats (like opens).\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 12, 2021","title":"Fixed Get Campaign Info to return total clicks for parent automations and variates","slug":"fixed-get-campaign-info-total-clicks-parent-automations-variates","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"29f770ce-0c03-5f2e-9e8d-39963bbebbdb","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We updated the description for the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/lists/get-list-info/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List response’s\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"visibility\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" property, and removed \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"visibility\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" from the body parameters when adding and updating a list.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"visibility\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" is a legacy setting, and no longer in use. Please note that although we removed it from documented body parameters, we’ll still accept it as a parameter.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"June 3, 2021","title":"Changes to List visibility","slug":"changes-to-list-visibility","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"40862709-48a7-5655-aebd-f9dbc73b5ef5","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Improperly formatted JSON request bodies will return a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"400\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" status with details about the parsing error in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"detail\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field and a title of “JSON Parse Exception”.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We weren’t properly capturing parsing errors when handling API requests. Now that we do, we’re able to return more helpful details to the caller so that they can fix their requests.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 19, 2021","title":"Better JSON parsing errors","slug":"better-json-parsing-errors","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"98383eea-5a01-5362-991a-aebda456c969","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"full_name\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" property was added to the response anywhere that members are returned.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, to determine a member’s name, you needed to look at the merge fields. Although \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"FNAME\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"LNAME\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" are the default merge tags for names, they can be changed. The \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"full_name\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" property makes a best effort to provide the full name using common merge tags.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 18, 2021","title":"Full name added to member responses","slug":"full-name-added-member-responses","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"bb63b056-1133-5a91-a077-9d4a329c443b","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We added an endpoint similar to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/automation-email-queue/add-subscriber-to-workflow-email/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Add Subscriber to Workflow Email\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint for the Customer Journey Builder. This is usable and dependent on the API 3.0 Starting Point/Wait.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/help/all-the-classic-automation-triggers/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Classic Automation trigger\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/automation-email-queue/add-subscriber-to-workflow-email/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" is valuable to our customers, but we can’t use the endpoint because it is located in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/automation/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Automations\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" section of the API. This new endpoint provides similar functionality, but it’s usable in the Customer Journey Builder, which provides new features and functionality not available in Classic Automations.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 25, 2021","title":"Addition of Customer Journey API trigger endpoint","slug":"addition-customer-journey-api-trigger-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"e2ead4e6-2a92-52e8-866d-412552a53e37","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We upgraded the ElasticSearch cluster that backs our activity search feature, which will result in significant stability improvements.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We were running an old version of ElasticSearch on old hardware that was struggling to keep up with our load. By migrating to new hardware and bumping several major ElasticSearch versions, we will cut the number of failed search requests in half.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 22, 2021","title":"Transactional search infrastructure improvements","slug":"transactional-search-infrastructure-improvements","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"c8774f25-463d-5889-a03b-5034792ad64e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We updated the version of Guzzle used by the Marketing and Transactional PHP SDK to 7.2. This version of Guzzle requires PHP 7, so users of SDK versions after January 25, 2021, will need to use PHP 7.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We want to stay up to date on the libraries we use, even though that may mean dropping some legacy support. We came to this decision with lots of input from users on our Github projects; thank you for the contributions and feedback!\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"January 25, 2021","title":"Require PHP 7 in Marketing and Transactional SDKs","slug":"require-php7-marketing-transactional-sdks","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"},{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"043d61b9-466d-5c03-86ba-dacf8474d35a","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We updated our \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://api.mailchimp.com/schema/3.0/Swagger.json?expand\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Swagger spec\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to make it match the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://raw.githubusercontent.com/mailchimp/mailchimp-client-lib-codegen/master/spec/marketing.json\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"spec\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" used in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/mailchimp/mailchimp-client-lib-codegen\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"codegen repo\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We use a Swagger spec to produce API client libraries from the codegen repo. Doing this required tweaking the Swagger spec that’s automatically produced by our internal API definitions, so there was some drift between the spec in the codegen repo and the one we produce automatically. We backported the changes, so our automatically-produced spec matched the one in the codegen repo. Now that this work is done, we can rely on the automatically produced spec for client libraries.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 1, 2020","title":"Ensuring codegen references latest Swagger spec","slug":"ensuring-codegen-references-latest-swagger-spec","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"1731a8d9-85dd-58eb-a188-0f52f9530042","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The security team has implemented stricter rules around redirect URL matching in our OAuth 2 implementation. We now only support exact matching on the redirect URI to adhere to the OAuth 2 spec.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Before this change, our redirect URL matching didn’t conform to the OAuth 2 spec. Strictly adhering to the spec results in more predictable behavior and fewer surprises.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 11, 2020","title":"Stricter rules for URL matching in OAuth 2","slug":"stricter-rules-for-url-matching-oauth-2","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"34862a31-63cc-5fca-8055-9a478d7dcade","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"On Tuesday, April 20th at 1:00PM ET we upgraded a router in our Atlanta data center. This should have no user visible impact, but it’s a core piece of our networking infrastructure and its replacement could cause periods of errors or unreachable hosts.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’re maintaining and upgrading our hardware for increased reliability.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 20, 2021","title":"Planned router maintenance","slug":"planned-router-maintenance","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"94f6797a-a89e-5071-a509-e3c65d3db3bd","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We improved our timeout and retry logic when uploading API batch job operations and results to S3.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We use S3 to store operations and results for API batch jobs. We weren’t handling timeouts when communicating with S3 as well as we could have; these fixes will improve reliability and throughput of our API batch jobs.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 10, 2021","title":"Stability improvements to API batch jobs","slug":"stability-improvements-api-batch-jobs","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"f1d106c1-99da-5968-af94-9c271eea7c8e","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"We’ve renamed Reaction Commerce to Mailchimp Open Commerce, and we’re relaunching on \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Mailchimp Developer\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"https://mailchimp.com/developer/\"}},{\"nodeType\":\"text\",\"value\":\" with brand-new \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"documentation\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"/open-commerce/docs/fundamentals/\"}},{\"nodeType\":\"text\",\"value\":\" and \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"guides\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"/open-commerce/guides/quick-start/\"}},{\"nodeType\":\"text\",\"value\":\". The API’s \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"GraphQL playground\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"/open-commerce/playground/\"}},{\"nodeType\":\"text\",\"value\":\" is also now available on Mailchimp Developer, and you can read past and upcoming \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Open Commerce release notes\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"/release-notes/\"}},{\"nodeType\":\"text\",\"value\":\" as well. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"The existing Reaction Commerce site and documentation will be redirected to new spots on Mailchimp Developer. At this time, we aren’t changing the name within the codebase—repos will still be accessible at the same locations \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"on GitHub\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"https://github.com/reactioncommerce/\"}},{\"nodeType\":\"text\",\"value\":\", and there are no breaking changes.\",\"marks\":[],\"data\":{}}],\"data\":{}}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Reaction Commerce was \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/mailchimp-acquires-reaction-commerce\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"acquired by Mailchimp\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" in April 2020. As part of the transition, we are now integrating and enhancing Reaction Commerce as part of Mailchimp’s developer-focused products. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 27, 2021","title":"Reaction Commerce is now Mailchimp Open Commerce","slug":"reaction-commerce-now-mailchimp-open-commerce","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"baee33b5-6e4d-5aec-b515-6ebe0a369f15","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Uploading product images from the admin dashboard was consistently failing. We fixed a bug in the image-uploading pipeline between file collections, the image upload server, and the frontend code. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We discovered that upload failures were occurring when the process of writing the image data to GridFS finished and threw \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"undefined\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" errors that weren’t being properly handled. The event handlers now cover this case, allowing the image uploads to complete.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 16, 2020","title":"Fixed image uploads","slug":"fixed-image-uploads","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"3b3c9f59-8928-539e-bd92-1afcbb8674dc","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"bin/package-link\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"bin/package-unlink\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" are two new scripts that automate all of the steps required for using local packages and handling their dependencies: you no longer have to \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"npm link\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" packages or adjust your \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"docker-compose.yml\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" file. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, to test your own plugins (including forked plugins), you had to use NPM and its registry—even if you just wanted to load a local package. These scripts greatly simplify package development, allowing you to test local plugins easily and efficiently. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"June 3, 2020","title":"Package link and unlink scripts","slug":"package-link-unlink-scripts","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"db926f24-5ec0-54f1-bf76-c4038c1a4af6","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"API Core is now its own plugin, which provides the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"ReactionAPICore\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" class. You can use it to build a NodeJS microservice that’s compatible with the Open Commerce platform, or you can build your main Open Commerce API on it if you don't want to fork the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/reaction\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" project.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/reaction\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" is now a shell project that imports all of the required NPM packages.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"API Core now gives developers more flexibility—part of a broader move away from forking being the primary way of working with the Open Commerce codebase.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 1, 2020","title":"API Core moved into its own plugin","slug":"api-core-moved-own-plugin","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"7a59afd4-aed2-5217-aa3a-09098a37f27e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a bug that was causing checkouts to fail if an item was hidden after it was added to the cart.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"If someone was actively shopping when the item was hidden, they wouldn’t be able to check out. Since failed checkouts reduce conversion rates, it was important to fix this bug for our users.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 16, 2020","title":"Fix for hidden items in cart at checkout","slug":"fix-hidden-items-cart-checkout","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"bb965043-a64d-587b-887f-c003ece227d4","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A new \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"pricing\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field has been added to Product and ProductVariant types, and the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"price\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field has been deprecated.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"When using the new field:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A price on a product can be a range (based on the product’s variants)\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Prices (minimum, maximum, range) are now properly reported through the API for certain products. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We wanted to keep fields consistent across packages and product types. Additionally, the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"pricing\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field makes the GraphQL API match the in-app pricing features.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 8, 2020","title":"Deprecated price field on product variants and options","slug":"deprecated-price-field-product-variants-options","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"bf6bc675-9c1f-5c34-8dd6-9cb4d37fcf6f","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updateShop\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" mutation has been expanded to support changing more shop settings via the GraphQL API, including: \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"currency\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"base units of measure\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"language\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"time zone\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"These options weren’t included in the initial move to the GraphQL API; making them available via a mutation improves convenience for developers.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 19, 2020","title":"Additional fields on updateShop mutation","slug":"additional-fields-updateshop-mutation","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"bad31577-a56c-5039-aa83-a13974f3488e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We moved remaining \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"role\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"permissions\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"-related code out of the Open Commerce API and into the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"simple-authorization\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" plugin.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, developers had to use the built-in authentication service or fork the whole app to use a custom one. This change makes it easier to swap this plugin for a custom authorization service or implement other options like Auth0. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 6, 2020","title":"Migrated roles and permissions code","slug":"migrated-roles-permissions-code","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"0f948c48-de85-500a-9d4d-b0b86ca53a89","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/reaction/blob/trunk/CHANGELOG.md#v300\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"released version 3.0\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" of the Open Commerce API. This is the culmination of months of smaller updates and changes to the platform, including:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"GraphQL API for all functionality, replacing Meteor.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"New \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/reaction-admin\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"admin application\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for managing shops in a web browser.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Plugins are now distributed as NPM packages.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"New \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/reaction-identity\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"identity service\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to manage users, including \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/reaction-hydra\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Hydra\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" integration with OAuth 2.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Faster startup times for development, enabled by public Docker images.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"These are breaking changes, so existing plugins will need to be updated and future plugins should be built on the 3.0 platform.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"These changes will greatly improve the experience of both developers and shop administrators: NPM plugins simplify development, allowing the use of plugins without forking the entire Open Commerce project; removing the Meteor dependency improves development speed; and completing the GraphQL API provides consistency when building UI plugins. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 6, 2020","title":"Major update to the Open Commerce API","slug":"major-update-open-commerce-api","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"b97fe4a0-8f0c-54f2-924c-4d4afe9fb17f","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Prior to this change, 410 responses from audience webhooks were treated like any other error—we retried three times for the given change, and kept trying for other changes to the audience. Now a webhook that returns 410 will be disabled with no retries, and for all future changes to the audience. The Webhook entry on the Webhooks page in your \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://us16.admin.mailchimp.com/lists/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Audience settings\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" will indicate that it’s been disabled.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"410 means a resource is gone and its absence is likely to be permanent. Properly interpreting this response means less load on our servers and the servers that are hosting the webhook. Additionally, this allows webhook implementers to disable calls to their webhook without needing to make an API call to explicitly do so.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 5, 2021","title":" Returning a 410 from an audience webhook will disable it","slug":"returning-410-from-audience-webhook-will-disable-it","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"c33cc25d-cf47-5a87-a4d7-d615dae9a3bf","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"lines\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameter is required on this endpoint, but previously we’d return a generic 404 error message. Now we’ll return a 400 error with information about why the request failed.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A user reported being confused about the error message; we should be more informative about validation errors.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 15, 2021","title":"Better error on invalid request to ecommerce/stores/.../orders","slug":"passing-empty-lines-parameter-ecommerce-stores-orders-404","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"21cb9bdb-d777-5573-bc5e-ef21597ed6b0","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We changed the behavior of the unsubscribe merge tag to obfuscate the email address of the person who clicked the link. Instead of showing the entire address, the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"md_email\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameter now displays the address as something like x****@x***.*** . \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, if a customer clicked an unsubscribe link, their email address was displayed on the Unsubscribe page in full. By obfuscating the email address, this change provides better security.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 4, 2020","title":"Obfuscated emails on the Unsubscribe page","slug":"obfuscated-emails-unsubscribe-page","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"8d22c18e-435c-5781-8d1a-4acfc003e873","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, null-valued entries in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"properties\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" object passed to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-events\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Events endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" would cause a server error, returning a 500 to the client. With this change, we treat null property values as empty strings.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This change gives clients a little more flexibility with how they format the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"properties\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameter, and it cleans up our server logs.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 26, 2020","title":"Minor improvement to parameter handling in the Events endpoint","slug":"minor-improvement-parameter-handling-events-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"7013f4d7-17b2-59ec-abc6-0a8e93c35c49","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"It was possible to force multiple confirmation emails to be sent to a member when using identical \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-members/update-list-member/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"PATCH\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-members/add-or-update-list-member/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"PUT\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" requests to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-members/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Members resource\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". We’ve corrected this behavior by preventing the duplicate confirmation emails from being sent.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Before this change, multiple confirmation emails would be sent to a member’s inbox, which could potentially be used for abuse.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 19, 2020","title":"Preventing multiple confirmation emails on PATCH or PUT to Lists/Member endpoint","slug":"preventing-multiple-confirmation-emails-patch-put-lists-member","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"40c6f517-a0ca-5045-a073-d0e161480d6f","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We have released \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/tools\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"API client libraries\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for the Marketing and Transactional APIs, supporting PHP, Node.js, Ruby, and Python.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We wanted to make it easier for developers to integrate their applications with both of our APIs in the language of their choice. The new libraries are generated from \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/mailchimp/mailchimp-client-lib-codegen\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"publicly available API specs\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" and published on the respective package managers for each supported language.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 24, 2020","title":"New client libraries for Marketing and Transactional APIs","slug":"new-client-libraries-marketing-transactional-apis","category":null,"products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"},{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"25626c3e-f814-503a-a7ac-aac24e80f20e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve stopped calculating the (deprecated) \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"existing\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"options\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"imports\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" fields for the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-growth-history/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Growth History endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", and API responses will have a value of zero for these fields.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The data in these fields can be accessed in a more understandable way in other fields, and returning the data in these fields was slow and added infrastructure load when these endpoints were requested.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 27, 2020","title":"Deprecated fields in the Growth History endpoint","slug":"deprecated-fields-growth-history-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"7fbae507-2f51-5e09-8319-702681b83207","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We made a variety of fixes to our Swagger spec to improve the documentation.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"There were endpoints included in the documentation that have no function except to organize the path hierarchy. For example: \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/reporting\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\". We removed them since they’re not useful on their own. Additionally, there were some \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"body\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameters included incorrectly, for properties that are read-only and can’t be passed in as a parameter\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 13, 2020","title":"Assorted spec and documentation fixes","slug":"assorted-spec-documentation-fixes","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"78d057da-fb88-5680-a8dc-c5357156a682","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We removed the unused Update Automation endpoint. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This endpoint was limited in which automations workflow types could be updated, and no successful calls had been made to this endpoint in many months. We opted to deprecate it until we can provide a more useful method of updating automations.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Since we don’t see any usage of this endpoint, we don’t expect any action to be needed.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 2, 2020","title":"Deprecating the Update Automation endpoint","slug":"deprecating-update-automation-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"13fdf75b-2bb2-54db-810e-7a8fc23cb754","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a mistake in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/automation/list-automations/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"query parameters for filtering a list of automations\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The query parameter filters were incorrectly documented as \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"before_send_time\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"since_send_time\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\". The correct parameters are \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"before_start_time\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"since_start_time\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 4, 2020","title":"Updated list automations query parameters","slug":"updated-list-automations-query-parameters","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"59b19a24-e027-5209-b15a-3d567abba403","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve updated our \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://api.mailchimp.com/schema/3.0/Swagger.json?expand\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Swagger file\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to make it \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://swagger.io/docs/specification/2-0/basic-structure/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"OAS 2-compliant\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". Our API Reference documentation is generated from our Swagger file. Before this change, we used a number of non-standard field names to control formatting in those docs. We cleaned those fields up and added testing to prevent drift in the future.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’d heard from developers that an OAS 2-compliant Swagger would greatly improve the developer experience for the Marketing API. This update makes it possible, for example, to directly use our Swagger file in Postman to more easily make requests to our API endpoints, in addition to better integration with \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://openapi.tools/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"many other OAS-friendly tools\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 13, 2020","title":"API Swagger spec now OAS 2-compliant","slug":"api-swagger-spec-now-oas-2-compliant","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"e28dd5c9-7682-5b61-ba3b-41b324c8ff37","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a bug in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/campaigns/add-campaign/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"POST Campaigns endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" regarding invalid request body parameters for non-rss campaigns.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We were receiving requests that were attempting to create non-\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"rss\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" type campaigns with an \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"rss_opts\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field. These requests were throwing exceptions and returning \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"500\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" status codes to users. We now return a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"400\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" status code if \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"rss_opts\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" are provided for non-\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"rss\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" type campaigns.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 9, 2020","title":"Better handling of rss_opts for POST Campaigns","slug":"better-handling-of-rss_opts-for-post-campaigns","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"9ff3ed5c-876e-50d8-806c-a09866bf54d2","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We upgraded the underlying hardware of our database service resulting in significant performance improvements.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We were observing performance and occasional stability issues relating to our older database hardware. By doubling processor, memory, and network card speeds as well as tripling disk I/O speeds with newer NVMe solid-state drives, our database service is processing tasks in comfort. In turn, our web application service is processing tasks faster as well.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 19, 2020","title":"Transactional database infrastructure improvements","slug":"transactional-database-infrastructure-improvements","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"670e4786-5e83-5261-8abb-f9a6a059c830","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed the query parameter documentation for \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/templates/list-templates/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Templates\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The creation date filters on querying a list of templates were documented incorrectly, and we were missing some sorting options.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 25, 2020","title":"Fixing the query parameter documentation for List Templates","slug":"fixing-the-query-parameter-documentation-for-list-templates","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"6ae918f1-6b73-58d5-9d70-90423d44d75e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We improved performance on the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-activity/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Member Activity\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We noticed the List Member Activity endpoint was running more queries than it needed to. We made some adjustments, and this endpoint is now processing 25% faster.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 1, 2020","title":"Improved performance of List Member Activity","slug":"improved-performance-of-list-member-activity","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"60863d51-5471-521d-9bf1-3c7df657fe54","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a bug in \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/conversation-messages/list-messages/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Conversations Messages\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" that resulted in returning messages for all conversations.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A bug was inadvertently introduced on November 24 that caused the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/conversation-messages/list-messages/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Conversations Messages\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint to return messages for all conversations, instead of filtering to only messages for the provided conversation ID. The issue was fixed December 2.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 3, 2020","title":"Incorrectly returning messages for all conversations","slug":"incorrectly-returning-messages-for-all-conversations","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"07e1f79f-0059-5489-80b4-92a8ca90a43d","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a mistake in how the e-commerce API handled customers who did not opt-in to receiving marketing emails (e.g., when \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/ecommerce-orders/add-order/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"adding an order\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" via the API).\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"When we added a customer via some e-commerce API calls, we would first incorrectly add them as a “subscribed” contact (even though they had not opted in) and then immediately mark them as a “transactional” contact. The act of first marking them as “subscribed” caused us to incorrectly give these contacts an opt-in timestamp and also trigger them into any signup-related activities such as classic automations or customer journeys.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 7, 2020","title":"Fixed behavior for customers added via E-commerce endpoints","slug":"fixed-behavior-for-customers-added-via-e-commerce-endpoints","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"89cf293d-632b-53e0-a183-5c353ac2370c","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We adjusted several endpoints to return a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"405 Method Not Allowed\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" when processing unhandled methods instead of a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"404 Not Found\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Our API endpoints were not consistent when responding to methods that aren’t supported by a given endpoint. By providing a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"405 Method Not Allowed\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", with an additional \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"Allow\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" header specifying the methods that are valid for the endpoint, it should be easier to discover and fix erroneous API calls.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 16, 2020","title":"Improved HTTP status for unhandled methods","slug":"improved-http-status-for-unhandled-methods","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"7b56f912-c681-5c23-8eae-e273e8ac3a6b","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We shut down the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://api.mailchimp.com/playground\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Mailchimp API Playground\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The API Playground let users explore the Marketing API and the data it returns. Instead, we recommend users learn about and explore their API data with our new \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"API Reference docs\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", which include rich code snippets written for our official \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/guides/marketing-api-quick-start/#install-the-client-library-for-your-language\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"client libraries\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 9, 2020","title":"Sunsetting the Mailchimp API Playground","slug":"sunsetting-the-mailchimp-api-playground","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"8186a24d-cc23-52d6-aeb1-652acd5d4639","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We removed the largely unused Link Application endpoint due to security concerns.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We previously supported a POST \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/authorized-apps\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint that let you post the client credentials for an app, and receive a new API token associated with that app.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This would register an app to the users’ account in a way that isn’t transparent to the user, so to improve security, we removed this feature.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The endpoint was accessed by only a handful of accounts over the last few months, so most API users will not be impacted.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"January 26, 2021","title":"Deprecating the Link Application endpoint","slug":"deprecating-link-application-endpoint","category":null,"products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"0a1aec6f-6a97-550e-834b-1d321db28bfb","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We improved performance on the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/email-activity-reports/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Email Activity\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We realized we were fetching bounce activity from an inefficient source. With a more efficient method to fetch this information, this endpoint is now running an order of magnitude faster—the average request time has gone from 6 seconds to 200 milliseconds. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This change also makes this endpoint more consistent with bounce activity displayed in the web application. Previously, if an email server returned multiple bounces for a single recipient in a given campaign, this endpoint would include the latest one, whereas the web application would show the first one. As of this change, this endpoint will respond with the first bounce.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 11, 2020","title":"Performance improvement for Email Activity Reports","slug":"performance-improvement-for-email-activity-reports","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"9fe4b15a-a5e8-58a3-b5f4-4ecd730192d8","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In API responses, we return links to related endpoints. Some of the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"targetSchema\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"schema\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" fields pointed to outdated JSON Schema files. We changed these to reference the equivalent Swagger definition.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In the past, we deprecated our use of JSON Schema in favor of Swagger. Note that although we’re updating some of the link definitions, we don’t advise relying on them—we’d like to investigate deprecating them in the future. Instead, we recommend using the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"reference documentation\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://api.mailchimp.com/schema/3.0/Swagger.json?expand\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Swagger spec\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 24, 2020","title":"Improving the _links","slug":"improving-the-_links","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"04bb2a62-ceea-5802-bc34-b75ceb606fea","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We rewrote large parts of the API internals. There should be little to no external impact on API behavior, besides slight performance fluctuations.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The internals of the API had accumulated a fair bit of kludge over the past 5-10 years, so we rewrote a good portion of them and have identified several discrepancies in behavior across endpoints. During the rewrite, we learned about and ironed out many of the discrepancies that were causing friction internally—and in the process, we identified further changes that we’ll implement in the future to make behaviors across the APIs more consistent. \\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 19, 2020","title":"Internal infrastructure improvements","slug":"internal-infrastructure-improvements","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"c39679e4-6f3c-5df2-8c5b-1c25053874a6","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We published a \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/mailchimp/Mailchimp-SDK-iOS/tree/master/.swiftpm/xcode\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Mailchimp Mobile SDK Swift package\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for use in Xcode. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In Xcode 11 or newer, Swift Package Manager provides a native way to add package dependencies to Xcode. Compared to a third-party manager such as Cocoapods, Swift Package Manager is an even easier way to install the Mobile SDK. Making \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"MailchimpSDK\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" available as a Swift package allows us to reduce duplicate code and promote maintainability.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 18, 2021","title":"Mobile SDK for iOS adds Swift Package Support","slug":"mobile-sdk-for-ios-adds-swift-package-support","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"ca28952b-d0a0-51c7-bdd4-005ee87b5b34","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We made a small change to authorization that will affect a handful of users.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The Marketing API supports authorization using an Authorization header, \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/guides/quick-start/#make-your-first-api-call\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"using either a Bearer Token or Basic Auth\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", but we also have legacy support for authorizing GET requests by including the API key in the query parameters. For cases where both an Authorization header and an API key query parameter were sent for a GET request, we defaulted to using the query parameter value.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We switched the default, so that if both methods are used, we use the value in the Authorization header. For the small number of requests that use both methods with conflicting values, we’ll return an HTTP 401 with the message: \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The API key included in the query parameters is not consistent with the Authorization header. Please provide authorization using a single method.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"blockquote\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"If you’re affected by this change, we recommend removing the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"?apikey=\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" query parameter from your requests, and sending only an Authorization header following the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/guides/quick-start/#make-your-first-api-call\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"example in our Quick Start guide\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The Authorization header is our preferred method for authorizing API requests. It simplifies our systems if we can assume that any time the Authorization header is present, it’s the authorization method we’ll be using.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 17, 2021","title":"Changes when using multiple authorization methods","slug":"changes-when-using-multiple-authorization-methods","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"b1dc8267-520b-5991-b0b4-a5ac9d1afc0c","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The following verbs and endpoints:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-preview-segment/preview-segment/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"POST /lists/{list_id}/preview-segment\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/add-member-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/add-member-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/add-member-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"POST /lists/{list_id}/members/{subscriber_hash}/notes\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/update-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/update-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/update-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"PATCH /lists/{list_id}/members/{subscriber_hash}/notes/{note_id}\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/interests/update-interest-in-category/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/interests/update-interest-in-category/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/interests/update-interest-in-category/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"PATCH /lists/{list_id}/interest-categories/{interest_category_id}/interests/{interest_id}\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-tags/add-or-remove-member-tags/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-tags/add-or-remove-member-tags/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-tags/add-or-remove-member-tags/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"POST /lists/{list_id}/members/{subscriber_hash}/tags\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Had a body parameter that wasn’t marked as required in our Swagger file, but was required for the API endpoint to work. These parameters are now marked as required.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This changed the method signature for the following methods in \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/tools\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"our SDKs\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\":\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"createListMemberNote / create_list_member_note\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updateListMemberNote / update_list_member_note\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"previewSegment / preview_segment\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updateInterestCategoryInterest / update_interest_category_interest\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updateListMemberTags / update_list_member_tags\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The parameters were incorrectly labeled. This caused confusion with some of our sample code, and was also factually incorrect.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 23, 2020","title":"Updated Swagger and API reference to match endpoint requirements","slug":"updated-swagger-api-reference-match-endpoint-requirements","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"a5d3dcf6-5925-5858-9db6-07e371c49473","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We now handle boolean query parameters in a more explicit way.  For query parameters that are defined as a boolean type in our documentation, the case-insensitive strings \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"true\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"1\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" will be handled as a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"true\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" value, and the case-insensitive strings \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"false\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"0\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" will be handled as the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"false\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" value.  Other values will be defaulted to \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"false\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", if provided.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We didn’t have a clear statement on what the accepted values for boolean query parameters were.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 2, 2021","title":"Handling boolean query parameters","slug":"handling-boolean-query-parameters","category":null,"products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"3374546d-8b1a-56ce-b2d8-aec19045a97a","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, if an object was passed as the value of the email field in a POST to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-members\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Lists/members endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", the server would return a 500 error. Now we return a 400 error with a clear error message.\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We saw multiple occurrences of these errors in our logs. Ideally, badly formed requests shouldn’t return 500 errors, and we should give more information to callers when errors do occur.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 18, 2020","title":"Improved error messaging on malformed requests to the Members endpoint","slug":"improved-error-messaging-malformed-requests-members-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"09b1ea09-5048-5a35-801c-b678aee16192","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The Marketing API’s \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/mailchimp/mailchimp-marketing-php\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"PHP client library\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" was not handling the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"fields\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"exclude_fields\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" query parameters correctly. We’ve fixed a bug in the client generation that will process the arrays as CSV strings. This change will affect version 3.0.35 of the PHP client library.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A user reported unexpected behavior when passing in an array of strings, and we discovered that the Swagger Codegen utility was not parsing the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"collectionFormat\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" for query parameters as expected.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 17, 2021","title":"Fixing a PHP client library include and exclude fields bug","slug":"fixing-php-client-library-include-exclude-fields-bug","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true}]},"contentfulReleaseNotesLanding":{"metadata":{"title":"Release Notes","description":"Recent and scheduled updates to the Mailchimp Marketing API, Transactional Email, and Open Commerce.","image":null,"twitterCardImageFormat":"summary"},"pinnedNote":null,"activeNotes":[{"id":"1731a8d9-85dd-58eb-a188-0f52f9530042","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The security team has implemented stricter rules around redirect URL matching in our OAuth 2 implementation. We now only support exact matching on the redirect URI to adhere to the OAuth 2 spec.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Before this change, our redirect URL matching didn’t conform to the OAuth 2 spec. Strictly adhering to the spec results in more predictable behavior and fewer surprises.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 11, 2020","title":"Stricter rules for URL matching in OAuth 2","slug":"stricter-rules-for-url-matching-oauth-2","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"3374546d-8b1a-56ce-b2d8-aec19045a97a","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, if an object was passed as the value of the email field in a POST to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-members\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Lists/members endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", the server would return a 500 error. Now we return a 400 error with a clear error message.\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We saw multiple occurrences of these errors in our logs. Ideally, badly formed requests shouldn’t return 500 errors, and we should give more information to callers when errors do occur.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 18, 2020","title":"Improved error messaging on malformed requests to the Members endpoint","slug":"improved-error-messaging-malformed-requests-members-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"8d22c18e-435c-5781-8d1a-4acfc003e873","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, null-valued entries in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"properties\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" object passed to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-events\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Events endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" would cause a server error, returning a 500 to the client. With this change, we treat null property values as empty strings.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This change gives clients a little more flexibility with how they format the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"properties\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameter, and it cleans up our server logs.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 26, 2020","title":"Minor improvement to parameter handling in the Events endpoint","slug":"minor-improvement-parameter-handling-events-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"21cb9bdb-d777-5573-bc5e-ef21597ed6b0","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We changed the behavior of the unsubscribe merge tag to obfuscate the email address of the person who clicked the link. Instead of showing the entire address, the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"md_email\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameter now displays the address as something like x****@x***.*** . \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, if a customer clicked an unsubscribe link, their email address was displayed on the Unsubscribe page in full. By obfuscating the email address, this change provides better security.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 4, 2020","title":"Obfuscated emails on the Unsubscribe page","slug":"obfuscated-emails-unsubscribe-page","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"59b19a24-e027-5209-b15a-3d567abba403","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve updated our \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://api.mailchimp.com/schema/3.0/Swagger.json?expand\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Swagger file\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to make it \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://swagger.io/docs/specification/2-0/basic-structure/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"OAS 2-compliant\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". Our API Reference documentation is generated from our Swagger file. Before this change, we used a number of non-standard field names to control formatting in those docs. We cleaned those fields up and added testing to prevent drift in the future.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’d heard from developers that an OAS 2-compliant Swagger would greatly improve the developer experience for the Marketing API. This update makes it possible, for example, to directly use our Swagger file in Postman to more easily make requests to our API endpoints, in addition to better integration with \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://openapi.tools/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"many other OAS-friendly tools\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 13, 2020","title":"API Swagger spec now OAS 2-compliant","slug":"api-swagger-spec-now-oas-2-compliant","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"7013f4d7-17b2-59ec-abc6-0a8e93c35c49","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"It was possible to force multiple confirmation emails to be sent to a member when using identical \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-members/update-list-member/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"PATCH\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-members/add-or-update-list-member/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"PUT\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" requests to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-members/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Members resource\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". We’ve corrected this behavior by preventing the duplicate confirmation emails from being sent.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Before this change, multiple confirmation emails would be sent to a member’s inbox, which could potentially be used for abuse.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 19, 2020","title":"Preventing multiple confirmation emails on PATCH or PUT to Lists/Member endpoint","slug":"preventing-multiple-confirmation-emails-patch-put-lists-member","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"40c6f517-a0ca-5045-a073-d0e161480d6f","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We have released \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/tools\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"API client libraries\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for the Marketing and Transactional APIs, supporting PHP, Node.js, Ruby, and Python.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We wanted to make it easier for developers to integrate their applications with both of our APIs in the language of their choice. The new libraries are generated from \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/mailchimp/mailchimp-client-lib-codegen\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"publicly available API specs\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" and published on the respective package managers for each supported language.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 24, 2020","title":"New client libraries for Marketing and Transactional APIs","slug":"new-client-libraries-marketing-transactional-apis","category":null,"products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"},{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"25626c3e-f814-503a-a7ac-aac24e80f20e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve stopped calculating the (deprecated) \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"existing\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"options\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"imports\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" fields for the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-growth-history/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Growth History endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", and API responses will have a value of zero for these fields.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The data in these fields can be accessed in a more understandable way in other fields, and returning the data in these fields was slow and added infrastructure load when these endpoints were requested.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"August 27, 2020","title":"Deprecated fields in the Growth History endpoint","slug":"deprecated-fields-growth-history-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"043d61b9-466d-5c03-86ba-dacf8474d35a","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We updated our \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://api.mailchimp.com/schema/3.0/Swagger.json?expand\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Swagger spec\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to make it match the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://raw.githubusercontent.com/mailchimp/mailchimp-client-lib-codegen/master/spec/marketing.json\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"spec\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" used in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/mailchimp/mailchimp-client-lib-codegen\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"codegen repo\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We use a Swagger spec to produce API client libraries from the codegen repo. Doing this required tweaking the Swagger spec that’s automatically produced by our internal API definitions, so there was some drift between the spec in the codegen repo and the one we produce automatically. We backported the changes, so our automatically-produced spec matched the one in the codegen repo. Now that this work is done, we can rely on the automatically produced spec for client libraries.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 1, 2020","title":"Ensuring codegen references latest Swagger spec","slug":"ensuring-codegen-references-latest-swagger-spec","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"7fbae507-2f51-5e09-8319-702681b83207","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We made a variety of fixes to our Swagger spec to improve the documentation.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"There were endpoints included in the documentation that have no function except to organize the path hierarchy. For example: \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/reporting\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\". We removed them since they’re not useful on their own. Additionally, there were some \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"body\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameters included incorrectly, for properties that are read-only and can’t be passed in as a parameter\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 13, 2020","title":"Assorted spec and documentation fixes","slug":"assorted-spec-documentation-fixes","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"04bb2a62-ceea-5802-bc34-b75ceb606fea","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We rewrote large parts of the API internals. There should be little to no external impact on API behavior, besides slight performance fluctuations.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The internals of the API had accumulated a fair bit of kludge over the past 5-10 years, so we rewrote a good portion of them and have identified several discrepancies in behavior across endpoints. During the rewrite, we learned about and ironed out many of the discrepancies that were causing friction internally—and in the process, we identified further changes that we’ll implement in the future to make behaviors across the APIs more consistent. \\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"October 19, 2020","title":"Internal infrastructure improvements","slug":"internal-infrastructure-improvements","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"78d057da-fb88-5680-a8dc-c5357156a682","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We removed the unused Update Automation endpoint. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This endpoint was limited in which automations workflow types could be updated, and no successful calls had been made to this endpoint in many months. We opted to deprecate it until we can provide a more useful method of updating automations.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Since we don’t see any usage of this endpoint, we don’t expect any action to be needed.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 2, 2020","title":"Deprecating the Update Automation endpoint","slug":"deprecating-update-automation-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"13fdf75b-2bb2-54db-810e-7a8fc23cb754","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a mistake in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/automation/list-automations/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"query parameters for filtering a list of automations\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The query parameter filters were incorrectly documented as \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"before_send_time\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"since_send_time\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\". The correct parameters are \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"before_start_time\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"since_start_time\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 4, 2020","title":"Updated list automations query parameters","slug":"updated-list-automations-query-parameters","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"7b56f912-c681-5c23-8eae-e273e8ac3a6b","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We shut down the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://api.mailchimp.com/playground\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Mailchimp API Playground\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The API Playground let users explore the Marketing API and the data it returns. Instead, we recommend users learn about and explore their API data with our new \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"API Reference docs\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", which include rich code snippets written for our official \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/guides/marketing-api-quick-start/#install-the-client-library-for-your-language\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"client libraries\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 9, 2020","title":"Sunsetting the Mailchimp API Playground","slug":"sunsetting-the-mailchimp-api-playground","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"e28dd5c9-7682-5b61-ba3b-41b324c8ff37","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a bug in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/campaigns/add-campaign/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"POST Campaigns endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" regarding invalid request body parameters for non-rss campaigns.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We were receiving requests that were attempting to create non-\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"rss\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" type campaigns with an \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"rss_opts\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field. These requests were throwing exceptions and returning \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"500\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" status codes to users. We now return a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"400\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" status code if \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"rss_opts\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" are provided for non-\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"rss\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" type campaigns.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 9, 2020","title":"Better handling of rss_opts for POST Campaigns","slug":"better-handling-of-rss_opts-for-post-campaigns","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"9ff3ed5c-876e-50d8-806c-a09866bf54d2","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We upgraded the underlying hardware of our database service resulting in significant performance improvements.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We were observing performance and occasional stability issues relating to our older database hardware. By doubling processor, memory, and network card speeds as well as tripling disk I/O speeds with newer NVMe solid-state drives, our database service is processing tasks in comfort. In turn, our web application service is processing tasks faster as well.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 19, 2020","title":"Transactional database infrastructure improvements","slug":"transactional-database-infrastructure-improvements","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"9fe4b15a-a5e8-58a3-b5f4-4ecd730192d8","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In API responses, we return links to related endpoints. Some of the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"targetSchema\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"schema\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" fields pointed to outdated JSON Schema files. We changed these to reference the equivalent Swagger definition.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In the past, we deprecated our use of JSON Schema in favor of Swagger. Note that although we’re updating some of the link definitions, we don’t advise relying on them—we’d like to investigate deprecating them in the future. Instead, we recommend using the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"reference documentation\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://api.mailchimp.com/schema/3.0/Swagger.json?expand\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Swagger spec\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 24, 2020","title":"Improving the _links","slug":"improving-the-_links","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"670e4786-5e83-5261-8abb-f9a6a059c830","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed the query parameter documentation for \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/templates/list-templates/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Templates\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The creation date filters on querying a list of templates were documented incorrectly, and we were missing some sorting options.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"November 25, 2020","title":"Fixing the query parameter documentation for List Templates","slug":"fixing-the-query-parameter-documentation-for-list-templates","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"6ae918f1-6b73-58d5-9d70-90423d44d75e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We improved performance on the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-activity/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Member Activity\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We noticed the List Member Activity endpoint was running more queries than it needed to. We made some adjustments, and this endpoint is now processing 25% faster.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 1, 2020","title":"Improved performance of List Member Activity","slug":"improved-performance-of-list-member-activity","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"60863d51-5471-521d-9bf1-3c7df657fe54","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a bug in \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/conversation-messages/list-messages/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Conversations Messages\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" that resulted in returning messages for all conversations.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A bug was inadvertently introduced on November 24 that caused the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/conversation-messages/list-messages/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Conversations Messages\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint to return messages for all conversations, instead of filtering to only messages for the provided conversation ID. The issue was fixed December 2.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 3, 2020","title":"Incorrectly returning messages for all conversations","slug":"incorrectly-returning-messages-for-all-conversations","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"07e1f79f-0059-5489-80b4-92a8ca90a43d","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a mistake in how the e-commerce API handled customers who did not opt-in to receiving marketing emails (e.g., when \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/ecommerce-orders/add-order/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"adding an order\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" via the API).\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"When we added a customer via some e-commerce API calls, we would first incorrectly add them as a “subscribed” contact (even though they had not opted in) and then immediately mark them as a “transactional” contact. The act of first marking them as “subscribed” caused us to incorrectly give these contacts an opt-in timestamp and also trigger them into any signup-related activities such as classic automations or customer journeys.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 7, 2020","title":"Fixed behavior for customers added via E-commerce endpoints","slug":"fixed-behavior-for-customers-added-via-e-commerce-endpoints","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"0a1aec6f-6a97-550e-834b-1d321db28bfb","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We improved performance on the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/email-activity-reports/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List Email Activity\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We realized we were fetching bounce activity from an inefficient source. With a more efficient method to fetch this information, this endpoint is now running an order of magnitude faster—the average request time has gone from 6 seconds to 200 milliseconds. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This change also makes this endpoint more consistent with bounce activity displayed in the web application. Previously, if an email server returned multiple bounces for a single recipient in a given campaign, this endpoint would include the latest one, whereas the web application would show the first one. As of this change, this endpoint will respond with the first bounce.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 11, 2020","title":"Performance improvement for Email Activity Reports","slug":"performance-improvement-for-email-activity-reports","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"89cf293d-632b-53e0-a183-5c353ac2370c","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We adjusted several endpoints to return a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"405 Method Not Allowed\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" when processing unhandled methods instead of a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"404 Not Found\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Our API endpoints were not consistent when responding to methods that aren’t supported by a given endpoint. By providing a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"405 Method Not Allowed\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", with an additional \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"Allow\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" header specifying the methods that are valid for the endpoint, it should be easier to discover and fix erroneous API calls.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 16, 2020","title":"Improved HTTP status for unhandled methods","slug":"improved-http-status-for-unhandled-methods","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"b1dc8267-520b-5991-b0b4-a5ac9d1afc0c","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The following verbs and endpoints:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-preview-segment/preview-segment/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"POST /lists/{list_id}/preview-segment\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/add-member-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/add-member-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/add-member-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"POST /lists/{list_id}/members/{subscriber_hash}/notes\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/update-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/update-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-notes/update-note/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"PATCH /lists/{list_id}/members/{subscriber_hash}/notes/{note_id}\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/interests/update-interest-in-category/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/interests/update-interest-in-category/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/interests/update-interest-in-category/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"PATCH /lists/{list_id}/interest-categories/{interest_category_id}/interests/{interest_id}\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-tags/add-or-remove-member-tags/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-tags/add-or-remove-member-tags/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/api/marketing/list-member-tags/add-or-remove-member-tags/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"POST /lists/{list_id}/members/{subscriber_hash}/tags\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Had a body parameter that wasn’t marked as required in our Swagger file, but was required for the API endpoint to work. These parameters are now marked as required.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This changed the method signature for the following methods in \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/tools\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"our SDKs\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\":\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"createListMemberNote / create_list_member_note\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updateListMemberNote / update_list_member_note\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"previewSegment / preview_segment\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updateInterestCategoryInterest / update_interest_category_interest\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updateListMemberTags / update_list_member_tags\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The parameters were incorrectly labeled. This caused confusion with some of our sample code, and was also factually incorrect.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 23, 2020","title":"Updated Swagger and API reference to match endpoint requirements","slug":"updated-swagger-api-reference-match-endpoint-requirements","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"c8774f25-463d-5889-a03b-5034792ad64e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We updated the version of Guzzle used by the Marketing and Transactional PHP SDK to 7.2. This version of Guzzle requires PHP 7, so users of SDK versions after January 25, 2021, will need to use PHP 7.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We want to stay up to date on the libraries we use, even though that may mean dropping some legacy support. We came to this decision with lots of input from users on our Github projects; thank you for the contributions and feedback!\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"January 25, 2021","title":"Require PHP 7 in Marketing and Transactional SDKs","slug":"require-php7-marketing-transactional-sdks","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"},{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":true},{"id":"8186a24d-cc23-52d6-aeb1-652acd5d4639","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We removed the largely unused Link Application endpoint due to security concerns.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We previously supported a POST \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/authorized-apps\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint that let you post the client credentials for an app, and receive a new API token associated with that app.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This would register an app to the users’ account in a way that isn’t transparent to the user, so to improve security, we removed this feature.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The endpoint was accessed by only a handful of accounts over the last few months, so most API users will not be impacted.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"January 26, 2021","title":"Deprecating the Link Application endpoint","slug":"deprecating-link-application-endpoint","category":null,"products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"ca28952b-d0a0-51c7-bdd4-005ee87b5b34","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We made a small change to authorization that will affect a handful of users.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The Marketing API supports authorization using an Authorization header, \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/guides/quick-start/#make-your-first-api-call\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"using either a Bearer Token or Basic Auth\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", but we also have legacy support for authorizing GET requests by including the API key in the query parameters. For cases where both an Authorization header and an API key query parameter were sent for a GET request, we defaulted to using the query parameter value.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We switched the default, so that if both methods are used, we use the value in the Authorization header. For the small number of requests that use both methods with conflicting values, we’ll return an HTTP 401 with the message: \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The API key included in the query parameters is not consistent with the Authorization header. Please provide authorization using a single method.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"blockquote\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"If you’re affected by this change, we recommend removing the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"?apikey=\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" query parameter from your requests, and sending only an Authorization header following the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/guides/quick-start/#make-your-first-api-call\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"example in our Quick Start guide\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The Authorization header is our preferred method for authorizing API requests. It simplifies our systems if we can assume that any time the Authorization header is present, it’s the authorization method we’ll be using.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 17, 2021","title":"Changes when using multiple authorization methods","slug":"changes-when-using-multiple-authorization-methods","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"c39679e4-6f3c-5df2-8c5b-1c25053874a6","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We published a \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/mailchimp/Mailchimp-SDK-iOS/tree/master/.swiftpm/xcode\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Mailchimp Mobile SDK Swift package\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for use in Xcode. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In Xcode 11 or newer, Swift Package Manager provides a native way to add package dependencies to Xcode. Compared to a third-party manager such as Cocoapods, Swift Package Manager is an even easier way to install the Mobile SDK. Making \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"MailchimpSDK\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" available as a Swift package allows us to reduce duplicate code and promote maintainability.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 18, 2021","title":"Mobile SDK for iOS adds Swift Package Support","slug":"mobile-sdk-for-ios-adds-swift-package-support","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"e2ead4e6-2a92-52e8-866d-412552a53e37","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We upgraded the ElasticSearch cluster that backs our activity search feature, which will result in significant stability improvements.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We were running an old version of ElasticSearch on old hardware that was struggling to keep up with our load. By migrating to new hardware and bumping several major ElasticSearch versions, we will cut the number of failed search requests in half.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 22, 2021","title":"Transactional search infrastructure improvements","slug":"transactional-search-infrastructure-improvements","category":"Active","products":[{"enumVal":"transactional","name":"Mailchimp Transactional Email","shortName":"Transactional Email"}],"actionRequiredToggle":false},{"id":"bb63b056-1133-5a91-a077-9d4a329c443b","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We added an endpoint similar to the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/automation-email-queue/add-subscriber-to-workflow-email/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Add Subscriber to Workflow Email\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" endpoint for the Customer Journey Builder. This is usable and dependent on the API 3.0 Starting Point/Wait.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/help/all-the-classic-automation-triggers/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Classic Automation trigger\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/automation-email-queue/add-subscriber-to-workflow-email/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" is valuable to our customers, but we can’t use the endpoint because it is located in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/automation/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Automations\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" section of the API. This new endpoint provides similar functionality, but it’s usable in the Customer Journey Builder, which provides new features and functionality not available in Classic Automations.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 25, 2021","title":"Addition of Customer Journey API trigger endpoint","slug":"addition-customer-journey-api-trigger-endpoint","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"a5d3dcf6-5925-5858-9db6-07e371c49473","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We now handle boolean query parameters in a more explicit way.  For query parameters that are defined as a boolean type in our documentation, the case-insensitive strings \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"true\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"1\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" will be handled as a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"true\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" value, and the case-insensitive strings \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"false\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"0\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" will be handled as the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"false\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" value.  Other values will be defaulted to \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"false\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", if provided.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We didn’t have a clear statement on what the accepted values for boolean query parameters were.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 2, 2021","title":"Handling boolean query parameters","slug":"handling-boolean-query-parameters","category":null,"products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"c33cc25d-cf47-5a87-a4d7-d615dae9a3bf","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"lines\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" parameter is required on this endpoint, but previously we’d return a generic 404 error message. Now we’ll return a 400 error with information about why the request failed.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A user reported being confused about the error message; we should be more informative about validation errors.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 15, 2021","title":"Better error on invalid request to ecommerce/stores/.../orders","slug":"passing-empty-lines-parameter-ecommerce-stores-orders-404","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"09b1ea09-5048-5a35-801c-b678aee16192","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The Marketing API’s \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/mailchimp/mailchimp-marketing-php\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"PHP client library\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" was not handling the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"fields\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"exclude_fields\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" query parameters correctly. We’ve fixed a bug in the client generation that will process the arrays as CSV strings. This change will affect version 3.0.35 of the PHP client library.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A user reported unexpected behavior when passing in an array of strings, and we discovered that the Swagger Codegen utility was not parsing the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"collectionFormat\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" for query parameters as expected.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 17, 2021","title":"Fixing a PHP client library include and exclude fields bug","slug":"fixing-php-client-library-include-exclude-fields-bug","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true},{"id":"b97fe4a0-8f0c-54f2-924c-4d4afe9fb17f","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Prior to this change, 410 responses from audience webhooks were treated like any other error—we retried three times for the given change, and kept trying for other changes to the audience. Now a webhook that returns 410 will be disabled with no retries, and for all future changes to the audience. The Webhook entry on the Webhooks page in your \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://us16.admin.mailchimp.com/lists/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Audience settings\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" will indicate that it’s been disabled.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"410 means a resource is gone and its absence is likely to be permanent. Properly interpreting this response means less load on our servers and the servers that are hosting the webhook. Additionally, this allows webhook implementers to disable calls to their webhook without needing to make an API call to explicitly do so.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 5, 2021","title":" Returning a 410 from an audience webhook will disable it","slug":"returning-410-from-audience-webhook-will-disable-it","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"bf6bc675-9c1f-5c34-8dd6-9cb4d37fcf6f","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"updateShop\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" mutation has been expanded to support changing more shop settings via the GraphQL API, including: \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"currency\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"base units of measure\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"language\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"time zone\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"These options weren’t included in the initial move to the GraphQL API; making them available via a mutation improves convenience for developers.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 19, 2020","title":"Additional fields on updateShop mutation","slug":"additional-fields-updateshop-mutation","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"db926f24-5ec0-54f1-bf76-c4038c1a4af6","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"API Core is now its own plugin, which provides the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"ReactionAPICore\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" class. You can use it to build a NodeJS microservice that’s compatible with the Open Commerce platform, or you can build your main Open Commerce API on it if you don't want to fork the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/reaction\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" project.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"/reaction\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" is now a shell project that imports all of the required NPM packages.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"API Core now gives developers more flexibility—part of a broader move away from forking being the primary way of working with the Open Commerce codebase.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 1, 2020","title":"API Core moved into its own plugin","slug":"api-core-moved-own-plugin","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"bb965043-a64d-587b-887f-c003ece227d4","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A new \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"pricing\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field has been added to Product and ProductVariant types, and the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"price\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field has been deprecated.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"When using the new field:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A price on a product can be a range (based on the product’s variants)\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Prices (minimum, maximum, range) are now properly reported through the API for certain products. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We wanted to keep fields consistent across packages and product types. Additionally, the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"pricing\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field makes the GraphQL API match the in-app pricing features.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 8, 2020","title":"Deprecated price field on product variants and options","slug":"deprecated-price-field-product-variants-options","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"baee33b5-6e4d-5aec-b515-6ebe0a369f15","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Uploading product images from the admin dashboard was consistently failing. We fixed a bug in the image-uploading pipeline between file collections, the image upload server, and the frontend code. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We discovered that upload failures were occurring when the process of writing the image data to GridFS finished and threw \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"undefined\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" errors that weren’t being properly handled. The event handlers now cover this case, allowing the image uploads to complete.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 16, 2020","title":"Fixed image uploads","slug":"fixed-image-uploads","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"7a59afd4-aed2-5217-aa3a-09098a37f27e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a bug that was causing checkouts to fail if an item was hidden after it was added to the cart.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"If someone was actively shopping when the item was hidden, they wouldn’t be able to check out. Since failed checkouts reduce conversion rates, it was important to fix this bug for our users.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 16, 2020","title":"Fix for hidden items in cart at checkout","slug":"fix-hidden-items-cart-checkout","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"0f948c48-de85-500a-9d4d-b0b86ca53a89","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’ve \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/reaction/blob/trunk/CHANGELOG.md#v300\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"released version 3.0\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" of the Open Commerce API. This is the culmination of months of smaller updates and changes to the platform, including:\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"GraphQL API for all functionality, replacing Meteor.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"New \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/reaction-admin\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"admin application\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for managing shops in a web browser.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Plugins are now distributed as NPM packages.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"New \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/reaction-identity\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"identity service\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to manage users, including \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://github.com/reactioncommerce/reaction-hydra\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Hydra\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" integration with OAuth 2.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Faster startup times for development, enabled by public Docker images.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"list-item\"}],\"nodeType\":\"unordered-list\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"These are breaking changes, so existing plugins will need to be updated and future plugins should be built on the 3.0 platform.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"These changes will greatly improve the experience of both developers and shop administrators: NPM plugins simplify development, allowing the use of plugins without forking the entire Open Commerce project; removing the Meteor dependency improves development speed; and completing the GraphQL API provides consistency when building UI plugins. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"February 6, 2020","title":"Major update to the Open Commerce API","slug":"major-update-open-commerce-api","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"bad31577-a56c-5039-aa83-a13974f3488e","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We moved remaining \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"role\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"permissions\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"-related code out of the Open Commerce API and into the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"simple-authorization\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" plugin.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, developers had to use the built-in authentication service or fork the whole app to use a custom one. This change makes it easier to swap this plugin for a custom authorization service or implement other options like Auth0. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"March 6, 2020","title":"Migrated roles and permissions code","slug":"migrated-roles-permissions-code","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"3b3c9f59-8928-539e-bd92-1afcbb8674dc","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"bin/package-link\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"bin/package-unlink\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" are two new scripts that automate all of the steps required for using local packages and handling their dependencies: you no longer have to \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"npm link\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" packages or adjust your \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"docker-compose.yml\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" file. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, to test your own plugins (including forked plugins), you had to use NPM and its registry—even if you just wanted to load a local package. These scripts greatly simplify package development, allowing you to test local plugins easily and efficiently. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"June 3, 2020","title":"Package link and unlink scripts","slug":"package-link-unlink-scripts","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"34862a31-63cc-5fca-8055-9a478d7dcade","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"On Tuesday, April 20th at 1:00PM ET we upgraded a router in our Atlanta data center. This should have no user visible impact, but it’s a core piece of our networking infrastructure and its replacement could cause periods of errors or unreachable hosts.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’re maintaining and upgrading our hardware for increased reliability.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 20, 2021","title":"Planned router maintenance","slug":"planned-router-maintenance","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"f1d106c1-99da-5968-af94-9c271eea7c8e","whatText":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"We’ve renamed Reaction Commerce to Mailchimp Open Commerce, and we’re relaunching on \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Mailchimp Developer\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"https://mailchimp.com/developer/\"}},{\"nodeType\":\"text\",\"value\":\" with brand-new \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"documentation\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"/open-commerce/docs/fundamentals/\"}},{\"nodeType\":\"text\",\"value\":\" and \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"guides\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"/open-commerce/guides/quick-start/\"}},{\"nodeType\":\"text\",\"value\":\". The API’s \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"GraphQL playground\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"/open-commerce/playground/\"}},{\"nodeType\":\"text\",\"value\":\" is also now available on Mailchimp Developer, and you can read past and upcoming \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Open Commerce release notes\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"/release-notes/\"}},{\"nodeType\":\"text\",\"value\":\" as well. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"The existing Reaction Commerce site and documentation will be redirected to new spots on Mailchimp Developer. At this time, we aren’t changing the name within the codebase—repos will still be accessible at the same locations \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"on GitHub\",\"marks\":[{\"type\":\"underline\"}],\"data\":{}}],\"data\":{\"uri\":\"https://github.com/reactioncommerce/\"}},{\"nodeType\":\"text\",\"value\":\", and there are no breaking changes.\",\"marks\":[],\"data\":{}}],\"data\":{}}]}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Reaction Commerce was \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/mailchimp-acquires-reaction-commerce\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"acquired by Mailchimp\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" in April 2020. As part of the transition, we are now integrating and enhancing Reaction Commerce as part of Mailchimp’s developer-focused products. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"April 27, 2021","title":"Reaction Commerce is now Mailchimp Open Commerce","slug":"reaction-commerce-now-mailchimp-open-commerce","category":"Active","products":[{"enumVal":"open-commerce","name":"Mailchimp Open Commerce","shortName":"Open Commerce"}],"actionRequiredToggle":false},{"id":"94f6797a-a89e-5071-a509-e3c65d3db3bd","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We improved our timeout and retry logic when uploading API batch job operations and results to S3.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We use S3 to store operations and results for API batch jobs. We weren’t handling timeouts when communicating with S3 as well as we could have; these fixes will improve reliability and throughput of our API batch jobs.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 10, 2021","title":"Stability improvements to API batch jobs","slug":"stability-improvements-api-batch-jobs","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"98383eea-5a01-5362-991a-aebda456c969","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"A \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"full_name\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" property was added to the response anywhere that members are returned.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, to determine a member’s name, you needed to look at the merge fields. Although \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"FNAME\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"LNAME\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" are the default merge tags for names, they can be changed. The \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"full_name\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" property makes a best effort to provide the full name using common merge tags.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 18, 2021","title":"Full name added to member responses","slug":"full-name-added-member-responses","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"40862709-48a7-5655-aebd-f9dbc73b5ef5","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Improperly formatted JSON request bodies will return a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"400\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" status with details about the parsing error in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"detail\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" field and a title of “JSON Parse Exception”.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We weren’t properly capturing parsing errors when handling API requests. Now that we do, we’re able to return more helpful details to the caller so that they can fix their requests.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"May 19, 2021","title":"Better JSON parsing errors","slug":"better-json-parsing-errors","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"29f770ce-0c03-5f2e-9e8d-39963bbebbdb","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We updated the description for the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/lists/get-list-info/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"List response’s\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"visibility\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" property, and removed \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"visibility\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" from the body parameters when adding and updating a list.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"visibility\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" is a legacy setting, and no longer in use. Please note that although we removed it from documented body parameters, we’ll still accept it as a parameter.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"June 3, 2021","title":"Changes to List visibility","slug":"changes-to-list-visibility","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false},{"id":"86a16afe-c8ee-585c-b46b-9c01f277fafe","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We fixed a bug in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"report_summary\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" section of the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"/marketing/api/campaigns/get-campaign-info/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"individual campaigns endpoint\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" for parent automation and variate campaigns. Previously, we reported 0 total clicks for those campaign types; now we will report the sum of clicks between the child campaigns.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"This falls in line with the expected behavior elsewhere in the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"report_summary\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" section for other stats (like opens).\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 12, 2021","title":"Fixed Get Campaign Info to return total clicks for parent automations and variates","slug":"fixed-get-campaign-info-total-clicks-parent-automations-variates","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":false}],"scheduledNotes":[{"id":"dfa8e563-664f-51ad-a6a0-88b58e405e25","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Previously, when an HTTP request was sent to the Marketing API, we redirect it to HTTPS. We’ve now stopped redirecting these requests and will instead return an HTTP 426 error code indicating the request needs to use HTTPS.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Users with affected API keys or Authorized Apps should have received an email about the change.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Although the Marketing API only accepts HTTPS requests, providing a redirect meant it still supported sending an initial HTTP request that transmitted a user’s sensitive information in plaintext. Returning a 426 error with the appropriate message helps ensure integrations are sending their requests securely.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"July 27, 2021","title":"No longer redirecting HTTP requests","slug":"no-longer-redirecting-http-requests","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true}]},"contentfulReleaseNotesNote":{"id":"d90dcedc-2f3e-5609-a49d-fd274a25b436","whatText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We've started writing over the \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"campaign_id\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"outreach_id\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" values on \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/ecommerce-orders/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Orders\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to align with \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/help/about-mailchimp-attribution/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"our new attribution model\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" and user-configured settings. If your integration is sending \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"campaign_id\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"}],\"value\":\"outreach_id\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" with \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/ecommerce-orders/add-order/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Add Order\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" or \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/developer/marketing/api/ecommerce-orders/update-order/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Update Order\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" API calls, we recommend deprecating that logic.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whyText":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We’re rolling out \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://mailchimp.com/help/about-mailchimp-attribution/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Mailchimp's native attribution model\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" across all e-commerce integrations. This new model gives you more complete insights into how marketing campaigns contribute to customer purchases. It also improves marketing performance reporting for all Mailchimp customers using e-commerce integrations. Additionally, this reduces the need for complex custom logic for attributing orders to specific marketing messages.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"whenText":null,"formattedPublishDate":"December 6, 2024","title":"Overwriting campaign_id and outreach_id","slug":"overwriting-campaign_id-and-outreach_id","category":"Active","products":[{"enumVal":"marketing","name":"Mailchimp Marketing API","shortName":"Marketing API"}],"actionRequiredToggle":true}},"pageContext":{}},"staticQueryHashes":["1207002660","1376854140","279774122","302783970"]}