Skip to content

ads add/update: support Title2, SitelinkSetId, AdExtensions, VCardId, TurboPageId, DisplayUrlPath, Mobile via typed flags #202

Description

@axisrow

Context

direct-cli 0.3.8 introduced strict WSDL parity for ads add (PR #190, #196) and removed the free-form --json flag. Current typed flags cover --type, --title, --text, --href, --image-hash, --action, --tracking-url, --age-label.

This is insufficient to create production-grade ads via CLI. Fields available in WSDL TextAdAdd / TextAdUpdate but unreachable from CLI today:

WSDL field Used for Type
Title2 Second headline (TEXT_AD) string
SitelinkSetId Sitelinks attached to the ad int64
AdExtensions Callouts and other ad extensions array of int64
VCardId Business card int64
TurboPageId Turbo page int64
DisplayUrlPath Display URL path string
Mobile Mobile flag YES_NO

Real-world impact: yandex-direct-mcp-plugin (downstream) cannot create ads with images, sitelinks, or callouts — they have to be filled in manually via the Direct web UI after ads add.

Proposed flags (typed, mirroring WSDL)

--title2 TEXT             Second title (TEXT_AD)
--display-url-path TEXT   Display URL path (TEXT_AD / TEXT_IMAGE_AD)
--mobile [YES|NO]         Mobile-targeted flag (TEXT_AD)
--vcard-id INTEGER        VCard ID (TEXT_AD)
--turbo-page-id INTEGER   Turbo page ID (TEXT_AD / DYNAMIC_TEXT_AD)
--sitelink-set-id INTEGER Sitelink set ID (TEXT_AD)
--ad-extensions TEXT      Comma-separated AdExtension IDs (TEXT_AD)

Apply the same per---type validation already in place: e.g. --title2 and --sitelink-set-id only on TEXT_AD, schema-gated.

Alternative

If adding 7+ flags is too noisy, consider a narrow --extensions-json for the small subset of "complex" fields (AdExtensions, Sitelinks), keeping simple scalars (Title2, Mobile, etc.) as flags. This would partially relax the strict WSDL parity policy but is a pragmatic middle ground.

Downstream

Tracked in yandex-direct-mcp-plugin: axisrow/yandex-direct-mcp-plugin#106 (section B1).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions