You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sub-task of #402 (Wave 2: expose remaining nested *FieldNames request parameters as CLI options).
The strategies.get request type declares 16 nested *FieldNames parameters that have no dedicated kebab-case CLI option. They are currently registered in NESTED_FIELDNAMES_EXCLUSIONS (tests/test_api_coverage.py) with the #402 marker so test_every_nested_fieldnames_param_has_cli_option passes.
This is one of the two largest groups in Wave 2 (along with ads get) — splitting into smaller PRs (e.g. by Cpa / Cpc / PayForConversion families) is acceptable as long as each PR removes the corresponding NESTED_FIELDNAMES_EXCLUSIONS rows.
direct_cli/commands/sitelinks.py:114 and direct_cli/commands/keywordbids.py — Wave 1 examples (PR feat(api): expose separate *FieldNames params for sitelinks and keywordbids #403): each option parses CSV via parse_csv_strings, rejects empty input with click.UsageError, sets the WSDL key only when non-empty, and (for multi-FieldNames resources) falls back to the matching COMMON_FIELDS[<service>]["<XxxFieldNames>"] default.
direct_cli/utils.py — COMMON_FIELDS dict: extend with a dict[str, list[str]] entry keyed by the WSDL request param.
Acceptance
Each WSDL parameter above has a kebab-case --<name>-field-names flag on direct strategies get.
Context
Sub-task of #402 (Wave 2: expose remaining nested
*FieldNamesrequest parameters as CLI options).The
strategies.getrequest type declares 16 nested*FieldNamesparameters that have no dedicated kebab-case CLI option. They are currently registered inNESTED_FIELDNAMES_EXCLUSIONS(tests/test_api_coverage.py) with the#402marker sotest_every_nested_fieldnames_param_has_cli_optionpasses.This is one of the two largest groups in Wave 2 (along with
ads get) — splitting into smaller PRs (e.g. by Cpa / Cpc / PayForConversion families) is acceptable as long as each PR removes the correspondingNESTED_FIELDNAMES_EXCLUSIONSrows.Scope — WSDL parameters to expose
StrategyAverageCpaFieldNames--strategy-average-cpa-field-namesStrategyAverageCpaMultipleGoalsFieldNames--strategy-average-cpa-multiple-goals-field-namesStrategyAverageCpaPerCampaignFieldNames--strategy-average-cpa-per-campaign-field-namesStrategyAverageCpaPerFilterFieldNames--strategy-average-cpa-per-filter-field-namesStrategyAverageCpcFieldNames--strategy-average-cpc-field-namesStrategyAverageCpcPerCampaignFieldNames--strategy-average-cpc-per-campaign-field-namesStrategyAverageCpcPerFilterFieldNames--strategy-average-cpc-per-filter-field-namesStrategyAverageCrrFieldNames--strategy-average-crr-field-namesStrategyMaxProfitFieldNames--strategy-max-profit-field-namesStrategyMaximumClicksFieldNames--strategy-maximum-clicks-field-namesStrategyMaximumConversionRateFieldNames--strategy-maximum-conversion-rate-field-namesStrategyPayForConversionCrrFieldNames--strategy-pay-for-conversion-crr-field-namesStrategyPayForConversionFieldNames--strategy-pay-for-conversion-field-namesStrategyPayForConversionMultipleGoalsFieldNames--strategy-pay-for-conversion-multiple-goals-field-namesStrategyPayForConversionPerCampaignFieldNames--strategy-pay-for-conversion-per-campaign-field-namesStrategyPayForConversionPerFilterFieldNames--strategy-pay-for-conversion-per-filter-field-namesReference implementation
direct_cli/commands/adextensions.py— original--callout-field-namespattern (PR [codex] Add adextensions CalloutFieldNames flag #359).direct_cli/commands/sitelinks.py:114anddirect_cli/commands/keywordbids.py— Wave 1 examples (PR feat(api): expose separate *FieldNames params for sitelinks and keywordbids #403): each option parses CSV viaparse_csv_strings, rejects empty input withclick.UsageError, sets the WSDL key only when non-empty, and (for multi-FieldNames resources) falls back to the matchingCOMMON_FIELDS[<service>]["<XxxFieldNames>"]default.direct_cli/utils.py—COMMON_FIELDSdict: extend with adict[str, list[str]]entry keyed by the WSDL request param.Acceptance
--<name>-field-namesflag ondirect strategies get.--<name>-field-names "") raisesclick.UsageError.NESTED_FIELDNAMES_EXCLUSIONSremoved.tests/test_dry_run.pymirroring thesitelinks_get/keywordbids_getshape.pytest tests/test_api_coverage.py::test_every_nested_fieldnames_param_has_cli_optionpasses without those exclusions.CHANGELOG.mdentry under Unreleased.