Skip to content

Comments

App Store Server API + CloudKit Push Notifications + Auto-Release#2

Merged
meszmate merged 1 commit intomainfrom
feature/appstore
Feb 6, 2026
Merged

App Store Server API + CloudKit Push Notifications + Auto-Release#2
meszmate merged 1 commit intomainfrom
feature/appstore

Conversation

@meszmate
Copy link
Owner

@meszmate meszmate commented Feb 6, 2026

Summary

  • Add complete App Store Server API support behind a new opt-in appstore feature — 23 endpoints covering transactions, subscriptions, consumption, refund history, notifications, retention messaging, and JWS signed data verification with X.509 certificate chain validation
  • Add CloudKit push notification support — APNs payload parsing for query/zone/database notifications and webcourier long-polling
  • Add GitHub Actions release workflow that validates, publishes to crates.io, and creates a GitHub release on tag push
  • Update CI and README with full documentation for all new features

App Store Server API (appstore feature)

New opt-in feature (appstore = ["chrono", "x509-cert"]) with 13 modules:

  • types.rs — 30+ enums (environment, status, notification types, consumption, etc.)
  • error.rs — 78 error codes with AppStoreErrorCode enum and error parsing
  • models.rs — 25+ request/response structs
  • client.rs — AppStoreServerClient with JWT Bearer auth (aud: appstoreconnect-v1)
  • transactions.rs — 5 endpoints: history (v1/v2), info, order lookup, app transaction
  • subscriptions.rs — 4 endpoints: status, extend, mass extend, mass extend status
  • consumption.rs — 3 endpoints: consumption data, refund history, app account token
  • notifications.rs — 3 endpoints: test notification, test status, notification history
  • messaging.rs — 8 endpoints: image/message CRUD, default message config
  • signed_data.rs — SignedDataVerifier with X.509 chain validation, JWS decode
  • notifications_v2.rs — V2 notification payload types (19 types, 17 subtypes)
  • notifications_v1.rs — V1 notification payload types (deprecated)

CloudKit Push Notifications

  • New cloudkit::notifications module with CKNotification enum (Query, RecordZone, Database variants)
  • parse_notification() for parsing APNs ck dictionary payloads
  • CloudKitClient::poll_notifications() for webcourier long-polling (120s timeout)
  • QueryNotificationReason and DatabaseScope enums
  • 7 new fields on NotificationInfo (collapse ID, desired keys, category, title/subtitle localization)

CI/CD

  • New release.yml workflow: triggered on v* tag push, runs validation, publishes to crates.io, creates GitHub release with auto-generated notes
  • Updated ci.yml to include appstore feature in clippy, test, and check matrices

@meszmate meszmate merged commit 206dd03 into main Feb 6, 2026
22 checks passed
@meszmate meszmate deleted the feature/appstore branch February 6, 2026 06:21
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