Communications: lists explain themselves, audience breakdown, exclusion lists, template lint and starters
Everything here is additive: existing requests and responses keep working.
- Lists explain themselves. A list has a
description, akind, asource_labeland a recordedprovenance.GET /lists/{id}returns the whole card with counts computed on every read (member_count,eligible_count,unsubscribed_count,bounced_count,suppressed_count), the campaigns that use it and whether it is a one-time snapshot.PATCH /lists/{id}is now a partial update. - Know who will get it, and why not the others.
compileandschedulereturn anaudiencebreakdown whoseincludedfigure is the recipient count, with the people left out grouped by reason. A campaign with nobody left is refused withEMPTY_AUDIENCE. The report carriessync, so a zero that only means "not delivered to the report yet" is not read as a failure. - Add contacts as JSON.
POST /lists/{id}/contacts/bulktakes up to 500 contacts, answers for every row, never adds back people who unsubscribed or bounced, and supportsdry_run. - Build lists from lists.
POST /lists/derive(union, intersection, difference) records how a list was made;GET /lists/compareshows the overlap of two lists;GET /lists/{id}/relationsandGET /mapshow how lists, campaigns and templates connect. - Exclusion lists. A campaign can take
exclude_list_ids: people on those lists are never sent to. A list that a campaign excludes can no longer be deleted (409 LIST_IN_USE, which also now protects lists used by unfinished campaigns). - Templates.
POST /templates/previewshows what a recipient will see, with and without a name.GET /templates/rules,POST /templates/lint,/fixand/check-linksgive a rulebook, findings with ready fixes (nothing is saved until youPATCH) and a link check. Templates have adescription, akindandderived_from, andPOST /templates/{id}/duplicatemakes a copy that remembers its parent. Campaigns have adescription. - Brand kit and starters.
GET/PATCH /settings/brand-kitstores your sender name, postal address, colours and font once.GET /templates/starterslists seven starters,POST /templates/starters/{key}/rendershows one without saving, andPOST /templates/from-startersaves it as a normal template. - Readiness.
GET /readinessnames the first thing missing before a campaign can be sent.
Documentation changed