Skip to content

feat: subscription pricing workflow + availability tool#3

Open
dsm5e wants to merge 3 commits intozelentsov-dev:developfrom
dsm5e:feat/subscription-pricing-workflow
Open

feat: subscription pricing workflow + availability tool#3
dsm5e wants to merge 3 commits intozelentsov-dev:developfrom
dsm5e:feat/subscription-pricing-workflow

Conversation

@dsm5e
Copy link
Copy Markdown

@dsm5e dsm5e commented Apr 20, 2026

Summary

  • subscriptions_set_availability — enable subscription in all 175 territories (POST /v1/subscriptionAvailabilities)
  • subscriptions_set_price — set equalized prices for all 175 territories in one PATCH request
    • GET /v1/subscriptionPricePoints/{id}/equalizations returns 174 non-base territories; prepend base (USA) = 175 total
    • Uses JSONAPI local ${N} IDs in included array
  • intro_offers_set_all_territories — set FREE_TRIAL intro offer for all 175 territories in one PATCH request
    • PATCH /v1/subscriptions/{id} with introductoryOffers relationship + included array of SubscriptionIntroductoryOfferInlineCreate
    • Discovered via Apple docs: SubscriptionUpdateRequest.Data.Relationships has introductoryOffers field (same pattern as prices)
    • Single request, replaces all existing intro offers atomically
  • Fixed HTTPClient.patch() generic constraint: Codable → Encodable
  • Replaced non-existent subscriptionPriceSchedules endpoint with correct PATCH /v1/subscriptions/{id}

Why this matters

Previously the only documented way to set intro offers was per-territory (175 separate POST requests). By using the PATCH /v1/subscriptions/{id} with included array, all territories are set in a single atomic request — same technique used for pricing.

Test plan

  • subscriptions_set_availability → 175 territories enabled
  • subscriptions_list_price_points with territory=USA → find base price point ID
  • subscriptions_set_priceterritories_set: 175, state not MISSING_METADATA
  • intro_offers_set_all_territories with duration=THREE_DAYSterritories_set: 175
  • Upload review screenshot → state READY_TO_SUBMIT

Verified end-to-end on live App Store Connect (MedScan app).

🤖 Generated with Claude Code

- subscriptions_set_availability: enable subscription in all 175 territories (POST /v1/subscriptionAvailabilities)
- subscriptions_set_price: set equalized prices for all 175 territories in one PATCH request
  - GET /v1/subscriptionPricePoints/{id}/equalizations + prepend base price point = 175 total
  - Uses JSONAPI local ${N} IDs in included array
- intro_offers_set_all_territories: set FREE_TRIAL intro offer for all 175 territories in one PATCH request
  - PATCH /v1/subscriptions/{id} with introductoryOffers relationship + included array
  - Single request replaces all existing intro offers
- Fixed HTTPClient.patch() generic constraint: Codable → Encodable
- Fixed SetAllSubscriptionPricesRequest model (replaced non-existent subscriptionPriceSchedules)
- Fixed _meta maxResultSizeChars annotations for large result sets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dsm5e dsm5e force-pushed the feat/subscription-pricing-workflow branch from 8d3066c to 44a0314 Compare April 20, 2026 14:08
vlad and others added 2 commits April 20, 2026 17:10
…imecode

Adds PATCH /v1/appPreviews/{id} support via screenshots_update_preview tool.
After uploading an app preview, use this to set the thumbnail frame
(previewFrameTimeCode in HH:MM:SS:FF format, e.g. "00:00:02:00").

- UpdatePreviewRequest model in ScreenshotModels.swift
- updatePreview() handler in ScreenshotsWorker+Handlers.swift
- updatePreviewTool() definition with preview_id + preview_frame_timecode params
- Registered in ScreenshotsWorker.swift (17 tools total)
- Tests updated: count 16→17, validation test for missing params

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant