Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -884,3 +884,16 @@
- Aligned call signaling and media behavior with the `voip-v2` implementation.

This is a Git development channel. No npm package has been published.

## Campaign contact frequency caps (beta)

`client.campaigns.getFrequencyCap()` reads team limits and their revision.
`client.campaigns.updateFrequencyCap({ maxPer24Hours: 2, maxPer7Days: 5, revision })`
replaces both windows. Send both limits as null to remove them. A stale revision
raises `PolymorfaConflictError`; read and reconcile before trying again. A new
limit requires beta access and can return `403 feature_unavailable`.
Campaign create/update accepts `frequencyCap`; null removes a campaign cap.
Recipient reads expose `failureReason` and accept `reason: "frequency_cap"`.
Analytics adds `frequencyCap.skippedRecipientCount`. Raising limits never retries
settled skips. `contracts/campaign-frequency-cap.json` pins the merged API source;
package publication and API availability remain separate release gates.
13 changes: 13 additions & 0 deletions contracts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -619,3 +619,16 @@ create, update, recipient and analytics schemas from API `dev` merge commit
`87b25fd9e2494d90f01f7511fb47be6a28845fa1` (polymorfa/polymorfa#503), with both source paths and file
hashes. `campaign-follow-ups-contract.test.ts` checks the SDK types against it.
The full snapshots stay pinned to `contracts/source.json` until the next repin.

## Campaign contact frequency caps (beta)

`client.campaigns.getFrequencyCap()` reads team limits and their revision.
`client.campaigns.updateFrequencyCap({ maxPer24Hours: 2, maxPer7Days: 5, revision })`
replaces both windows. Send both limits as null to remove them. A stale revision
raises `PolymorfaConflictError`; read and reconcile before trying again. A new
limit requires beta access and can return `403 feature_unavailable`.
Campaign create/update accepts `frequencyCap`; null removes a campaign cap.
Recipient reads expose `failureReason` and accept `reason: "frequency_cap"`.
Analytics adds `frequencyCap.skippedRecipientCount`. Raising limits never retries
settled skips. `contracts/campaign-frequency-cap.json` pins the merged API source;
package publication and API availability remain separate release gates.
Loading
Loading