Skip to content

feat(tags): rename, remove-by-email, bulk delete, and subscriber filters - #19

Merged
imjohnbo merged 1 commit into
catchup/05-subscribersfrom
catchup/06-tags
Aug 20, 2026
Merged

feat(tags): rename, remove-by-email, bulk delete, and subscriber filters#19
imjohnbo merged 1 commit into
catchup/05-subscribersfrom
catchup/06-tags

Conversation

@imjohnbo

@imjohnbo imjohnbo commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Part 6 of 8. Base: #18.

What this adds

Bulk tag deletion:

kit bulk tags delete --file tags.json     # [{id}, ...]

Rename. PUT /v4/tags/{id} had no CLI command:

kit tags update <id> <name>

Remove by email:

kit tags remove-by-email <tagId> <email>

The subscribers listing now takes the filters that the API documents: --state, --created-after, --created-before, --tagged-after, and --tagged-before.

Design notes

DELETE /v4/tags/{tag_id}/subscribers identifies the subscriber with an email_address query parameter. This is why del() needed query support in part 1. The request carries no body. A test asserts both facts.

The spec parameter list for that endpoint does not declare email_address. The endpoint description does, and it names the parameter explicitly. This branch follows the description.

Review notes

Tests: 306 before, 334 after.

Closes #10
Part of #12


The stack

Merge from the top down. Each part builds on the one above it.

PR Contents
1 #14 Client query support and shared helpers
2 #15 Sequence CRUD and sequence emails
3 #16 Posts and snippets
4 #17 Broadcast filters, account-wide stats, link clicks
5 #18 Subscriber slim listing, warnings, filter
6 #19 (this one) Tag rename, remove-by-email, bulk delete
7 #20 Account endpoints and purchase create
8 #21 Spec coverage map and its tests

Base branch: main for part 1, the previous part's branch for the rest.
GitHub retargets each base to main as the part below it merges.

…filters

Bulk tag deletion (issue #10):
  kit bulk tags delete --file tags.json

Rename (issue #12). PUT /v4/tags/{id} had no CLI command:
  kit tags update <id> <name>

Remove by email (issue #12). The API identifies the subscriber with an
email_address query parameter, which is why del() needed query support:
  kit tags remove-by-email <tagId> <email>

The subscribers listing now takes the filters the API documents:
--state, --created-after, --created-before, --tagged-after, --tagged-before.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Kit API spec update: 1 added

1 participant