Skip to content

✨ Surface remaining v5 resources: ads, product-pages, budget-orders, auth orgs (Phases 2-4)#34

Merged
SamPetherbridge merged 3 commits into
mainfrom
feat/v5-resources-phases-2-4
Jun 9, 2026
Merged

✨ Surface remaining v5 resources: ads, product-pages, budget-orders, auth orgs (Phases 2-4)#34
SamPetherbridge merged 3 commits into
mainfrom
feat/v5-resources-phases-2-4

Conversation

@SamPetherbridge

Copy link
Copy Markdown
Owner

Summary

Completes #32 (Phases 2–4) — surfaces the remaining reachable v5 resources from asa-api-client as CLI commands. Builds on Phase 1 (#33). Delivered as three logical commits, one per phase.

New commands

Phase 2 — creative management (read-only)

Command Library call
asa ads list -c <campaign> -a <ad-group> campaigns().ad_groups().ads.list
asa ads get <id> -c <campaign> -a <ad-group> …ads.get
asa product-pages list product_pages.list
asa product-pages get <id> product_pages.get
asa product-pages locales <id> product_pages.get_locale_details

Phase 3 — billing

Command Library call
asa budget-orders list budget_orders.list
asa budget-orders get <id> budget_orders.get

Phase 4 — org access

Command Library call
asa auth orgs acls.list

All support --format table\|json\|csv and follow existing typer/utils conventions.

Deliberate scope decisions

  • ads is read-only. v5 ad creation is tied to product pages / creative sets — out of scope for a surfacing pass. (Flagged as a scope guard in ✨ Surface remaining v5 API resources as CLI commands #32.)
  • No generic custom-reports command. The custom_reports resource is the impression-share API, and its GET /custom-reports endpoint returns 403 (disabled by Apple since March 2026) in favour of the Insights tool. The working POST/poll flow is already exposed via the impression-share group, so adding a dead endpoint was intentionally avoided.

Verification

  • ruff check / ruff format --check
  • mypy --strict (19 source files)
  • pytest — 11 passed (help/registration tests for each new group)
  • ✅ Every new command's help renders; full command tree loads

Closes #32.

Surface two v5 creative-management resources (read-only):

- asa ads list/get        — view ads within an ad group
- asa product-pages       — list/get custom product pages (CPP) and
  per-locale details (locales)

Ads are read-only: v5 ad creation is tied to product pages and creative
sets, out of scope for this pass. Phase 2 of #32.
Surface the v5 budget orders resource:

- asa budget-orders list   — list budget orders (budget, status, dates)
- asa budget-orders get    — show a single budget order

Note: the generic custom-reports endpoint is intentionally not surfaced —
Apple disabled GET /custom-reports (403) in March 2026 in favour of the
Insights tool, so the existing impression-share POST/poll flow remains the
working path. Phase 3 of #32.
Surface the v5 ACL resource via 'asa auth orgs', listing the
organizations the configured credentials can access (org ID, name,
currency, roles, time zone). Useful for finding the ASA_ORG_ID to use
in multi-org setups.

Phase 4 of #32.
@SamPetherbridge SamPetherbridge added the enhancement New feature or request label Jun 9, 2026
@SamPetherbridge SamPetherbridge merged commit 801e277 into main Jun 9, 2026
1 check passed
@SamPetherbridge SamPetherbridge deleted the feat/v5-resources-phases-2-4 branch June 9, 2026 03:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Surface remaining v5 API resources as CLI commands

1 participant