Repository navigation
feat(contacts): dryRun and onConflict on contacts.import and importCsv - #79
Merged
Merged
Conversation
Both imports take `dryRun` (the response the import would return, nothing written; no `importId`, which is now optional on ContactsImportResponse) and `onConflict` (`skip` creates missing contacts and leaves existing ones unchanged, counted in `summary.skipped` with a CONTACT_EXISTS_SKIPPED warning). Spec and generated types synced from GetBrew/brew-v2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
thedogwiththedataonit
marked this pull request as ready for review
October 21, 2026 08:09
Keeps the base's validation-billing wording and adds the dryRun and onConflict notes. Spec and generated types re-synced from brew-v2#2220. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ude/contact-import-dry-run
thedogwiththedataonit
changed the base branch from
claude/contact-imports
to
main
October 24, 2026 13:17
… reads stream slugs - Re-vendor the spec from brew-v2 main 87ac2c6242 (#2220 merged), types regenerated: imports' dryRun / onConflict, email lang, flow kind. - flows.get splits a <domain>/<kind> slug into the domain path plus ?kind= and takes a kind option; an encoded / named no flow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #76 (base
claude/contact-imports). App PR: GetBrew/brew-v2#2220.contacts.import()andcontacts.importCsv()takedryRun(the response the import would return, nothing written; carriesdryRun: trueand noimportId) andonConflict: 'upsert' | 'skip'(skipleaves existing contacts unchanged, counted insummary.skippedwith aCONTACT_EXISTS_SKIPPEDwarning).ContactsImportResponse.importIdis now optional (absent on a dry run). CHANGELOG notes it.src/generated/openapi-types.tssynced from brew-v2#2220; JSDoc,docs/contacts.md, tests for both options.Checks:
bun run test750/750 (two new tests:dryRunforwarded and a dry-run envelope with noimportId;onConflictforwarded andCONTACT_EXISTS_SKIPPEDread),tsc --noEmitclean, prettier clean. Baseclaude/contact-importsmerged through25f8e1e. Needs the matching API deployment.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.

Confidence Score: 5/5
The PR appears safe to merge with the matching API deployment.Summary
Adds
dryRunandonConflictto contact imports and makesimportIdoptional for previews.Reviews (4) · Last reviewed commit: "feat(contacts): sync dryRun/onConflict w..." · Reviewed by Greptile