feat: 8 new workers + 3 extended (+77 tools)#1
Merged
zelentsov-dev merged 15 commits intodevelopfrom Feb 17, 2026
Merged
Conversation
Phase 1 (Monetization, 27 tools): - SubscriptionsWorker (15): subscription CRUD, groups, localizations, prices, submit - OfferCodesWorker (7): offer code configs, one-time codes, prices - WinBackOffersWorker (5): win-back offers CRUD, prices - InAppPurchasesWorker extensions (+5): price points, price schedule, review screenshots Phase 2 (Marketing, 37 tools): - ScreenshotsWorker (12): screenshot sets, previews, reorder - CustomProductPagesWorker (10): custom pages, versions, localizations - ProductPageOptimizationWorker (9): A/B test experiments, treatments - PromotedPurchasesWorker (6): promoted purchases, images Phase 3 (Monitoring, 13 tools): - MetricsWorker (5): perf/power metrics, diagnostics - AnalyticsWorker extensions (+5): reports, instances, segments - AppEventsWorker extensions (+3): event localizations CRUD Infrastructure: WorkerManager routing, EntryPoint, Application instructions Tests: 345 tests passing (tool definitions, routing, parameter validation)
…k, custom pages, promoted)
- Metrics: use custom Accept headers (xcode-metrics+json, diagnostic-logs+json)
- Metrics: diagnostics endpoint uses build_id instead of app_id (404 fix)
- PPO: fix list endpoint to /v1/apps/{id}/appStoreVersionExperimentsV2 (403 fix)
- PPO: add required platform parameter to create experiment (409 fix)
- Offer codes: correct enum values, make number_of_periods required
- Win-back: add EligibilityRange type, promotionIntent, prices relationship with included[]
- Custom pages: add included[] with version + localization for create (inline create pattern)
- Promoted: fix path promotionImages -> promotedPurchaseImages
- offer_codes_create: fix enum values (STACK_WITH_INTRO_OFFERS, NEW/EXISTING/EXPIRED), add prices relationship with inline create
- custom_pages_create: remove invalid ${new} self-reference placeholder
- promoted_list_images: fix relationship URL (promotionImages)
- metrics_get_diagnostic_logs: decode callStackTree as string with base64/JSON fallback
- app_info_delete_localization: new DELETE tool for app info localizations (6->7 tools)
…eanup) - offer_codes_create: add territory relationship in inline prices - winback_create: territory support, FREE_TRIAL without pricePoint, eligibility validation (2-24) - custom_pages_create: fix included linkage by adding localizations rel to version - promoted_list_images: remove non-existent API endpoint (6→5 tools) - metrics_get_diagnostic_logs: raw JSON parsing for non-standard response format
… diagnostics raw fallback)
…remove localization back-reference
…pages ${local-id} format
…s tool - Add vendorNumber field to Company model (JSON: vendor_number) - Support ASC_VENDOR_NUMBER / ASC_COMPANY_N_VENDOR_NUMBER env vars - Make vendor_number optional in sales/financial report tools (fallback to config) - Add analytics_check_snapshot_status tool for monitoring snapshot readiness - Pass CompaniesManager to AnalyticsWorker for config-based vendor resolution
Sales and financial reports now return parsed rows, column headers, and summary stats (units, proceeds, quantities by currency/country) instead of raw TSV or base64-encoded gzip. Added limit parameter.
…mmaries - Add filter[version] to salesReports API calls with defaults per report type - Add summary_only param (default: true) — returns compact summary without raw rows - Add by_app aggregation to sales summary (units + proceeds per app) - Add subscription/subscriber/subscription_event specific summaries - Reduce default row limit from 100 to 25 when summary_only=false - Enrich tool description with report types, versions, frequencies, workflows
Extract fetchReportSummary from getSalesReport, add getAppSummary handler that fetches 4 report types in parallel (downloads, subscriptions, subscription events, revenue) with partial success.
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.
Summary
Phase 1 — Monetization (27 tools)
subscriptions_*(15) — full subscription CRUD, groups, localizations, prices, submitoffer_codes_*(7) — offer code configs, one-time codes, priceswinback_*(5) — win-back offers CRUD, pricesiap_*extended (+5) — price points, price schedule, review screenshotsPhase 2 — Marketing (37 tools)
screenshots_*(12) — screenshot sets, previews, reordercustom_pages_*(10) — custom product pages, versions, localizationsppo_*(9) — A/B experiments, treatments, localizationspromoted_*(6) — promoted purchases, imagesPhase 3 — Monitoring (13 tools)
metrics_*(5) — perf/power metrics, diagnosticsanalytics_*extended (+5) — reports, instances, segmentsapp_events_*extended (+3) — event localizations CRUDTest plan
swift buildsucceedsswift test— 345 tests pass--workers subscriptions,metrics)