[codex] Add adgroups negative keyword flags#261
Conversation
|
@codex @claude review. Focus on critical issues: bugs, security vulnerabilities, logical errors, data loss risks, performance problems, API contract mismatches, and missing tests. Do NOT nitpick style, naming conventions, minor formatting, or subjective preferences — only flag issues that could break functionality or cause real harm in production. |
|
Claude finished @axisrow's task in 3m 44s —— View job Claude Code ReviewScope per request: critical correctness only — no nitpicks.
VerdictNo blocking issues. The payload shape, WSDL parity bookkeeping, and dry-run coverage are correct. Three minor observations below, none blocking. Correctness checks that passed
Minor observations (non-blocking)
TestsCoverage looks adequate: both add and update paths get a dry-run payload assertion per flag, and the rejection message is asserted to list the new options. The WSDL parity gate change is purely declarative bookkeeping and the four removed |
|
Codex Review: Didn't find any major issues. Bravo. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
There was a problem hiding this comment.
Pull request overview
This PR extends the adgroups CLI resource to support WSDL-optional, ad-group-level negative keyword fields on add/update, and updates the WSDL parity/audit gates plus documentation/examples accordingly.
Changes:
- Add typed
--negative-keywordsand--negative-keyword-shared-set-idsflags todirect adgroups add/updateand emit WSDL-style{ "Items": [...] }payload blocks. - Update dry-run tests and WSDL parity/audit registries to mark these optional fields as supported.
- Refresh README examples (EN/RU) and the generated optional-field audit report.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
direct_cli/commands/adgroups.py |
Adds new flags and payload serialization for ad-group negative keywords/shared-set IDs on add/update. |
tests/test_dry_run.py |
Adds dry-run payload assertions for the new flags and updates the “no-op update” rejection expectations. |
tests/test_wsdl_parity_gate.py |
Registers the new CLI flags as covering the relevant WSDL optional fields; removes the prior “missing_followup” audit entries. |
tests/WSDL_OPTIONAL_FIELD_AUDIT.md |
Updates generated audit counts/rows to reflect newly supported fields. |
README.md |
Updates adgroups one-line examples (EN/RU) to demonstrate the new flags. |
| if region_ids: | ||
| adgroup_data["RegionIds"] = parse_ids(region_ids) | ||
| parsed_negative_keywords = parse_csv_strings(negative_keywords) | ||
| if parsed_negative_keywords: | ||
| adgroup_data["NegativeKeywords"] = {"Items": parsed_negative_keywords} | ||
| parsed_negative_keyword_shared_set_ids = parse_ids(negative_keyword_shared_set_ids) |
|
Addressed the actionable invalid-ID feedback in a9eb191:
Verification:
@codex @claude review. Please re-check only blocking issues: bugs, contract mismatches, and missing tests. |
|
Claude finished @axisrow's task in 1m 31s —— View job Claude Code Review — re-check after a9eb191
VerdictNo blocking issues. The previously-flagged minor (raw What I verifiedFix is correct and centralized.
Test coverage is complete and targeted. Three new
Each asserts both the exact prefixed message ( No contract drift. The fix is purely a CLI surface improvement (exception → UsageError); payload shape, WSDL parity bookkeeping, and Things I checked and ruled out
Tests / contracts
Ship it. |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
* [codex] Add adgroup tracking params flags (#258) * Add adgroup tracking params flags * test: cover adgroup tracking params add rejection --------- Co-authored-by: axisrow <[email protected]> * [codex] Add sitelink TurboPageId typed input (#259) * feat(sitelinks): support turbo page id * test(sitelinks): cover turbo page json input --------- Co-authored-by: axisrow <[email protected]> * [codex] Add retargeting description flags (#260) * feat(retargeting): add description flags * fix(retargeting): preserve empty description --------- Co-authored-by: axisrow <[email protected]> * [codex] Add adgroups negative keyword flags (#261) * feat(adgroups): add negative keyword flags * fix(adgroups): report invalid negative set ids as usage errors --------- Co-authored-by: axisrow <[email protected]> * [codex] Add vcards nested contact flags (#262) * feat(vcards): add nested contact fields * fix(vcards): preserve grouped flag usage errors --------- Co-authored-by: axisrow <[email protected]> * feat(ads): add text ad extension update flags (#263) Co-authored-by: axisrow <[email protected]> * feat(feeds): add url feed detail flags (#265) Co-authored-by: axisrow <[email protected]> * docs: align optional WSDL audit depth notes * docs: document milestone 18 typed flags --------- Co-authored-by: axisrow <[email protected]>
Summary
Verification
Closes #243