Repository navigation
Add contacts import and Import History names for CSV imports - #65
Merged
Merged
Conversation
`contacts import` calls the new `POST /v1/contacts/import` with JSON rows from a file or stdin, recorded as one Import History batch. `contacts import-csv` sends the file's name (or `--file-name`) as `fileName`, so the batch is named in Import History. Both print the returned `importId`. `upsert-many`'s summary now says up to 1000 contacts and no history entry. Pins the SDK source commit that adds `contacts.import`; re-vendors the spec. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- `contacts import`: a JSON object body read from --file keeps its own `validate`, `consent` and `fileName`; flags override only when given, and a non-array, non-object --file is a usage error (Greptile P1). - `contacts import-csv`: --file-name, else an --input `fileName`, else the --file name. - CSV validation is metered per row (help text). - Pins the SDK commit with the shared import response type; re-vendors the spec and regenerates types and command docs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (its PR merged with main) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…IL_RESULT_UNAVAILABLE Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Counts that add up to the rows submitted, then the failed rows and notes by row number; --json keeps the envelope. Pins the SDK at 09a89b8 (row, total, CSV_ROW_SKIPPED) and re-vendors the spec from brew-v2#2194. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
thedogwiththedataonit
marked this pull request as draft
October 21, 2026 02:15
thedogwiththedataonit
marked this pull request as ready for review
October 21, 2026 08:09
…ering Re-vendored from brew-v2#2194: imports of at most 100 submitted contacts validate inline at 2 credits per submitted contact (failed rows count); larger imports bill per address in the background workflow, and validationJobId comes back only when a job is queued. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Re-vendored from brew-v2#2194: a CSV row is the parsed data row, so the header and blank lines are not counted. FIELD_TYPE_COERCED is reported once per field, and a validation failure after an import names the saved importId. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The SDK release adds contacts.import and the shared import response, so the temporary source pin and its release gate are gone; bun.lock resolves the registry artifact. 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.
Adds
contacts importfor named JSON batches in Import History and forwards CSV filenames. File/input/flag precedence and consent are preserved; recurringupsert-manyremains the sync path. Terminals show submitted totals, outcome counts, failed rows and warnings with optional row metadata, completed deliverability/persistence results or a background validation job. JSON output preserves the complete API envelope.Refreshed against CLI main
31d26dd190103624e4fd6651f31d91a0226c39eb, preserving merged category/group #68 and drift recovery #67, including its current-main freshness guard. Canonical generation from stable app #2194 sourcee87215e3c09418b1c43300b4f343b290a28a8f94corrects the CSV validation billing description without changing fields or runtime behavior. CLI help and its generated reference now distinguish inline charges per submitted CSV data row from background charges per address. The app and all three YAML mirrors share raw SHA-25689f71c3eaaee5ed17ce090d0488815d41250a86c13a357cf10d3b14d46f9a763. CSV skip warnings retain the first 100 individual rows plus an aggregate; terminal tables show 20 entries and point to the full JSON response.Coordinated validation pins reviewed, remotely available SDK #76 commit
7ca8cac2d70dd53244a343ee123b75ed9520b988. It preserves SDK 13 features and version while adding the import method, final row/total types and corrected validation descriptions.bun.lockwas regenerated from that source, without a local packed SDK or invented checksum. CLI version 0.17.0 and its published notes remain unchanged.Validation: a fresh frozen installation from an empty node_modules directory, 67 focused tests across eight files, TypeScript, full Biome (240 files), generated-type and command-doc freshness, build/version smoke and diff checks pass. Imports, completed validation output, canvas behavior, template groups and all three parity sentinels are covered. No live API call, import or package publication was performed.
Keep this draft through app #2194's strict cache/cost evaluation, signed-in acceptance, merge and API deployment, then SDK #76's release. Replace the temporary Git pin with the actual published SDK artifact and regenerate the lockfile before CLI release. Publish docs #326 after its examples are available. Category #68 and sentinel #67 are already merged.
Final app owner #2194 head
c2ed746b3558f2a849f4410fa21228646563b0d8contains these same contract descriptions and artifacts. Owner OpenAPI, contract-audit and generated-reference freshness checks pass against the refreshed consumers.

Confidence Score: 5/5
The PR appears safe to merge; no blocking issue was established.Summary
Adds named JSON contact imports and forwards CSV batch names to Import History.
Reviews (11) · Last reviewed commit: "build(deps): depend on the published @br..." · Reviewed by Greptile