0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/core/server/api/v3
Kevin Ansfield 322664a145
Added ability to send a newsletter to members with a certain label or product (#12932)
refs https://github.com/TryGhost/Team/issues/581
refs https://github.com/TryGhost/Team/issues/582

When publishing a post via the API it was possible to send it using `?email_recipient_filter=all/free/paid` which allowed you to send to members only based on their payment status which is quite limiting for some sites.

This PR updates the `?email_recipient_filter` query param to support Ghost's `?filter` param syntax which enables more specific recipient lists, eg:

`?email_recipient_filter=status:free` = free members only
`?email_recipient_filter=status:paid` = paid members only
`?email_recipient_filter=label:vip` = members that have the `vip` label attached
`?email_recipient_filter=status:paid,label:vip` = paid members and members that have the `vip` label attached

The older `free/paid` values are still supported by the API for backwards compatibility.

- updates `Post` and `Email` models to transform legacy `free` and `paid` values to their NQL equivalents on read/write
  - lets us not worry about supporting legacy values elsewhere in the code
  - cleanup migration to transform all rows slated for 5.0
- removes schema and API `isIn` validations for recipient filters so allow free-form filters
- updates posts API input serializers to transform `free` and `paid` values in the `?email_recipient_filter` param to their NQL equivalents for backwards compatibility
- updates Post API controllers `edit` methods to run a query using the supplied filter to verify that it's valid
- updates `mega` service to use the filter directly when selecting recipients
2021-05-07 11:56:41 +01:00
..
utils Added ability to send a newsletter to members with a certain label or product (#12932) 2021-05-07 11:56:41 +01:00
actions.js
authentication.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
authors-public.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
config.js Fixed v3 API config's billingUrl fetching 2021-03-31 13:47:58 +13:00
db.js Refactored exporter to use "allowlist" table filtering 2021-03-25 16:46:56 +13:00
email-preview.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
email.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
identities.js
images.js
index.js
integrations.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
invites.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
labels.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
mail.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
members.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
memberSigninUrls.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
membersStripeConnect.js
notifications.js
oembed.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
pages-public.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
pages.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
posts-public.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
posts.js Added ability to send a newsletter to members with a certain label or product (#12932) 2021-05-07 11:56:41 +01:00
preview.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
redirects.js
roles.js
schedules.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
session.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
settings-public.js
settings.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
site.js
slack.js Expanded requires of lib/common i18n and events 2021-05-03 17:14:52 +01:00
slugs.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
snippets.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
tags-public.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
tags.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
themes.js Expanded requires of lib/common i18n and events 2021-05-03 17:14:52 +01:00
users.js Moved i18n to shared 2021-05-04 13:03:38 +01:00
webhooks.js Moved i18n to shared 2021-05-04 13:03:38 +01:00