API changelog
What changed in the public API contract, newest first. The current contract is version 1.3.1, served at /api/v1.
Versioning and deprecation
- /api/v1 doesn't break. We never remove an operation, parameter or response field, make an optional field required, or change a field's type within v1 without the deprecation process below. A change that can't follow it gets a new major version, served alongside v1.
- Additions come any time. New operations, optional fields and parameters, response fields, enum values and webhook events can appear in a minor release. Ignore fields you don't know, and handle enum values you don't recognise.
- Deprecation comes with notice. A deprecated operation is marked in the contract and this changelog, and answers with
DeprecationandSunsetheaders. It keeps working for at least 180 days, until its sunset date, and the SDK warns when you call it. - Versions are checked. Every change to the contract bumps its version (MINOR for additions, PATCH for descriptions), and our build refuses a breaking change. The Node.js SDK's version follows the contract's.
1.3.1
- Changed
Journey message steps are now marketing messages: each is sent only to a contact who granted marketing consent for its channel, and is otherwise skipped (
message.skipped) while the journey carries on. They were sent as transactional messages before. Single messages (POST /public/messages) are unchanged.
- Changed
1.3.0
- Added
Partner accounts. An organization Senpede makes a partner creates one tenant organization per customer of its own platform with
POST /public/organizations(idempotent onexternalRef), and lists, reads, renames and invites staff to them. Needs the neworganizations:managescope. - Added
Every operation accepts an optional
Senpede-Organizationheader: a partner's key acts inside the named tenant organization with its usual scopes. A test key acts in that tenant's sandbox. - Added
Webhook endpoints take
includeTenantEvents: a partner's endpoint also receives its tenants' events, each carrying the tenant'sorganizationId. - Added
Tenants draw on their partner's allowance:
GET /public/usagereports the shared totals, and the newGET /public/usage/tenantsbreaks them down per tenant.
- Added
1.2.0
- Added
Journeys:
GET /public/journeysandGET /public/journeys/{journeyId}(scopejourneys:read). Journeys are still built and published in the dashboard. - Added
POST /public/journeys/{journeyId}/enrollmentsenrolls a contact bycontactId,externalReforemail(scopejourneys:enroll); 201 for a new enrollment, 200 with the existing one.GET /public/journeys/{journeyId}/enrollments,GET /public/journey-enrollments/{enrollmentId}andPOST /public/journey-enrollments/{enrollmentId}/exitfollow and end enrollments. - Added
Webhook events
journey.enrolled,journey.completedandjourney.exited, for every enrollment however it started (dashboard, automation rule or API).
- Added
1.1.0
- Added
GET /public/usage: the allowances for the current billing period, with how much of each is used, set aside for sends in progress and left. Needs the newusage:readscope. - Added
Webhook events
usage.quota_low(an allowance passed 75% or 90% of its included quantity) andusage.quota_exhausted(it reached 100%), once per allowance per billing period.
- Added
1.0.0
- Added
First versioned release of the public API contract. It covers contacts (including upsert by your own reference, archive, restore, erasure and bulk imports), consent assertions and suppressions, audiences, templates and channels, campaigns and broadcasts with their per-message status, single messages, webhook endpoints and deliveries, OAuth 2.0 client credentials, and test mode.
- Added
GET /public/contactsandGET /public/campaignsnow publish theirpage,pageSize,qandstatusquery parameters in the contract. - Added
Deprecated operations are marked
deprecatedin the contract and answer withDeprecationandSunsetheaders.
- Added
