gitextract_u4cbit1j/ ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ ├── ci-prb.yml │ ├── ci-release-docs.yml │ ├── ci-release.yml │ └── ci-snapshot.yml ├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.txt ├── MANIFEST.in ├── NOTICE.txt ├── README.md ├── appstoreserverlibrary/ │ ├── __init__.py │ ├── api_client.py │ ├── jws_signature_creator.py │ ├── models/ │ │ ├── AbstractAdvancedCommerceBaseItem.py │ │ ├── AbstractAdvancedCommerceInAppRequest.py │ │ ├── AbstractAdvancedCommerceItem.py │ │ ├── AbstractAdvancedCommerceResponse.py │ │ ├── AccountTenure.py │ │ ├── AdvancedCommerceDescriptors.py │ │ ├── AdvancedCommerceEffective.py │ │ ├── AdvancedCommerceOffer.py │ │ ├── AdvancedCommerceOfferPeriod.py │ │ ├── AdvancedCommerceOfferReason.py │ │ ├── AdvancedCommerceOneTimeChargeCreateRequest.py │ │ ├── AdvancedCommerceOneTimeChargeItem.py │ │ ├── AdvancedCommercePeriod.py │ │ ├── AdvancedCommerceReason.py │ │ ├── AdvancedCommerceRefundReason.py │ │ ├── AdvancedCommerceRefundType.py │ │ ├── AdvancedCommerceRequest.py │ │ ├── AdvancedCommerceRequestInfo.py │ │ ├── AdvancedCommerceRequestRefundItem.py │ │ ├── AdvancedCommerceRequestRefundRequest.py │ │ ├── AdvancedCommerceRequestRefundResponse.py │ │ ├── AdvancedCommerceSubscriptionCancelRequest.py │ │ ├── AdvancedCommerceSubscriptionCancelResponse.py │ │ ├── AdvancedCommerceSubscriptionChangeMetadataDescriptors.py │ │ ├── AdvancedCommerceSubscriptionChangeMetadataItem.py │ │ ├── AdvancedCommerceSubscriptionChangeMetadataRequest.py │ │ ├── AdvancedCommerceSubscriptionChangeMetadataResponse.py │ │ ├── AdvancedCommerceSubscriptionCreateItem.py │ │ ├── AdvancedCommerceSubscriptionCreateRequest.py │ │ ├── AdvancedCommerceSubscriptionMigrateDescriptors.py │ │ ├── AdvancedCommerceSubscriptionMigrateItem.py │ │ ├── AdvancedCommerceSubscriptionMigrateRenewalItem.py │ │ ├── AdvancedCommerceSubscriptionMigrateRequest.py │ │ ├── AdvancedCommerceSubscriptionMigrateResponse.py │ │ ├── AdvancedCommerceSubscriptionModifyAddItem.py │ │ ├── AdvancedCommerceSubscriptionModifyChangeItem.py │ │ ├── AdvancedCommerceSubscriptionModifyDescriptors.py │ │ ├── AdvancedCommerceSubscriptionModifyInAppRequest.py │ │ ├── AdvancedCommerceSubscriptionModifyPeriodChange.py │ │ ├── AdvancedCommerceSubscriptionModifyRemoveItem.py │ │ ├── AdvancedCommerceSubscriptionPriceChangeItem.py │ │ ├── AdvancedCommerceSubscriptionPriceChangeRequest.py │ │ ├── AdvancedCommerceSubscriptionPriceChangeResponse.py │ │ ├── AdvancedCommerceSubscriptionReactivateInAppRequest.py │ │ ├── AdvancedCommerceSubscriptionReactivateItem.py │ │ ├── AdvancedCommerceSubscriptionRevokeRequest.py │ │ ├── AdvancedCommerceSubscriptionRevokeResponse.py │ │ ├── AdvancedCommerceValidationUtils.py │ │ ├── AlternateProduct.py │ │ ├── AppData.py │ │ ├── AppTransaction.py │ │ ├── AppTransactionInfoResponse.py │ │ ├── AutoRenewStatus.py │ │ ├── BulletPoint.py │ │ ├── CheckTestNotificationResponse.py │ │ ├── ConsumptionRequest.py │ │ ├── ConsumptionRequestReason.py │ │ ├── ConsumptionRequestV1.py │ │ ├── ConsumptionStatus.py │ │ ├── Data.py │ │ ├── DecodedRealtimeRequestBody.py │ │ ├── DefaultConfigurationRequest.py │ │ ├── DefaultConfigurationResponse.py │ │ ├── DeliveryStatus.py │ │ ├── DeliveryStatusV1.py │ │ ├── Environment.py │ │ ├── ExpirationIntent.py │ │ ├── ExtendReasonCode.py │ │ ├── ExtendRenewalDateRequest.py │ │ ├── ExtendRenewalDateResponse.py │ │ ├── ExternalPurchaseToken.py │ │ ├── FirstSendAttemptResult.py │ │ ├── GetImageListResponse.py │ │ ├── GetImageListResponseItem.py │ │ ├── GetMessageListResponse.py │ │ ├── GetMessageListResponseItem.py │ │ ├── HeaderPosition.py │ │ ├── HistoryResponse.py │ │ ├── ImageSize.py │ │ ├── ImageState.py │ │ ├── InAppOwnershipType.py │ │ ├── JWSRenewalInfoDecodedPayload.py │ │ ├── JWSTransactionDecodedPayload.py │ │ ├── LastTransactionsItem.py │ │ ├── LibraryUtility.py │ │ ├── LifetimeDollarsPurchased.py │ │ ├── LifetimeDollarsRefunded.py │ │ ├── MassExtendRenewalDateRequest.py │ │ ├── MassExtendRenewalDateResponse.py │ │ ├── MassExtendRenewalDateStatusResponse.py │ │ ├── Message.py │ │ ├── MessageState.py │ │ ├── NotificationHistoryRequest.py │ │ ├── NotificationHistoryResponse.py │ │ ├── NotificationHistoryResponseItem.py │ │ ├── NotificationTypeV2.py │ │ ├── OfferDiscountType.py │ │ ├── OfferType.py │ │ ├── OrderLookupResponse.py │ │ ├── OrderLookupStatus.py │ │ ├── PerformanceTestConfig.py │ │ ├── PerformanceTestRequest.py │ │ ├── PerformanceTestResponse.py │ │ ├── PerformanceTestResponseTimes.py │ │ ├── PerformanceTestResultResponse.py │ │ ├── PerformanceTestStatus.py │ │ ├── Platform.py │ │ ├── PlayTime.py │ │ ├── PriceIncreaseStatus.py │ │ ├── PromotionalOffer.py │ │ ├── PromotionalOfferSignatureV1.py │ │ ├── PurchasePlatform.py │ │ ├── RealtimeRequestBody.py │ │ ├── RealtimeResponseBody.py │ │ ├── RealtimeUrlRequest.py │ │ ├── RealtimeUrlResponse.py │ │ ├── RefundHistoryResponse.py │ │ ├── RefundPreference.py │ │ ├── RefundPreferenceV1.py │ │ ├── ResponseBodyV2.py │ │ ├── ResponseBodyV2DecodedPayload.py │ │ ├── RevocationReason.py │ │ ├── RevocationType.py │ │ ├── SendAttemptItem.py │ │ ├── SendAttemptResult.py │ │ ├── SendTestNotificationResponse.py │ │ ├── Status.py │ │ ├── StatusResponse.py │ │ ├── SubscriptionGroupIdentifierItem.py │ │ ├── Subtype.py │ │ ├── Summary.py │ │ ├── TransactionHistoryRequest.py │ │ ├── TransactionInfoResponse.py │ │ ├── TransactionReason.py │ │ ├── Type.py │ │ ├── UpdateAppAccountTokenRequest.py │ │ ├── UploadMessageImage.py │ │ ├── UploadMessageRequestBody.py │ │ ├── UserStatus.py │ │ └── __init__.py │ ├── promotional_offer.py │ ├── py.typed │ ├── receipt_utility.py │ └── signed_data_verifier.py ├── docs/ │ └── requirements.txt ├── pyproject.toml ├── requirements.txt └── tests/ ├── __init__.py ├── resources/ │ ├── certs/ │ │ ├── testCA.der │ │ └── testSigningKey.p8 │ ├── mock_signed_data/ │ │ ├── legacyTransaction │ │ ├── missingX5CHeaderClaim │ │ ├── renewalInfo │ │ ├── testNotification │ │ ├── transactionInfo │ │ └── wrongBundleId │ ├── models/ │ │ ├── advancedCommerceDescriptors.json │ │ ├── advancedCommerceOffer.json │ │ ├── advancedCommerceOneTimeChargeCreateRequest.json │ │ ├── advancedCommerceOneTimeChargeItem.json │ │ ├── advancedCommerceRequestInfo.json │ │ ├── advancedCommerceRequestRefundItem.json │ │ ├── advancedCommerceRequestRefundRequest.json │ │ ├── advancedCommerceRequestRefundResponse.json │ │ ├── advancedCommerceSubscriptionCancelRequest.json │ │ ├── advancedCommerceSubscriptionCancelResponse.json │ │ ├── advancedCommerceSubscriptionChangeMetadataDescriptors.json │ │ ├── advancedCommerceSubscriptionChangeMetadataItem.json │ │ ├── advancedCommerceSubscriptionChangeMetadataRequest.json │ │ ├── advancedCommerceSubscriptionChangeMetadataResponse.json │ │ ├── advancedCommerceSubscriptionCreateItem.json │ │ ├── advancedCommerceSubscriptionCreateRequest.json │ │ ├── advancedCommerceSubscriptionMigrateDescriptors.json │ │ ├── advancedCommerceSubscriptionMigrateItem.json │ │ ├── advancedCommerceSubscriptionMigrateRenewalItem.json │ │ ├── advancedCommerceSubscriptionMigrateRequest.json │ │ ├── advancedCommerceSubscriptionMigrateResponse.json │ │ ├── advancedCommerceSubscriptionModifyAddItem.json │ │ ├── advancedCommerceSubscriptionModifyChangeItem.json │ │ ├── advancedCommerceSubscriptionModifyDescriptors.json │ │ ├── advancedCommerceSubscriptionModifyInAppRequest.json │ │ ├── advancedCommerceSubscriptionModifyPeriodChange.json │ │ ├── advancedCommerceSubscriptionModifyRemoveItem.json │ │ ├── advancedCommerceSubscriptionPriceChangeItem.json │ │ ├── advancedCommerceSubscriptionPriceChangeRequest.json │ │ ├── advancedCommerceSubscriptionPriceChangeResponse.json │ │ ├── advancedCommerceSubscriptionReactivateInAppRequest.json │ │ ├── advancedCommerceSubscriptionReactivateItem.json │ │ ├── advancedCommerceSubscriptionRevokeRequest.json │ │ ├── advancedCommerceSubscriptionRevokeResponse.json │ │ ├── apiException.json │ │ ├── apiTooManyRequestsException.json │ │ ├── apiUnknownError.json │ │ ├── appData.json │ │ ├── appTransaction.json │ │ ├── appTransactionDoesNotExistError.json │ │ ├── appTransactionInfoResponse.json │ │ ├── decodedRealtimeRequest.json │ │ ├── extendRenewalDateForAllActiveSubscribersResponse.json │ │ ├── extendSubscriptionRenewalDateResponse.json │ │ ├── familyTransactionNotSupportedError.json │ │ ├── getAllSubscriptionStatusesResponse.json │ │ ├── getDefaultMessageResponse.json │ │ ├── getImageListResponse.json │ │ ├── getMessageListResponse.json │ │ ├── getNotificationHistoryResponse.json │ │ ├── getRealtimeUrlResponse.json │ │ ├── getRefundHistoryResponse.json │ │ ├── getStatusOfSubscriptionRenewalDateExtensionsResponse.json │ │ ├── getTestNotificationStatusResponse.json │ │ ├── invalidAppAccountTokenUUIDError.json │ │ ├── invalidTransactionIdError.json │ │ ├── lookupOrderIdResponse.json │ │ ├── performanceTestResponse.json │ │ ├── performanceTestResultResponse.json │ │ ├── requestTestNotificationResponse.json │ │ ├── signedConsumptionRequestNotification.json │ │ ├── signedExternalPurchaseTokenNotification.json │ │ ├── signedExternalPurchaseTokenSandboxNotification.json │ │ ├── signedNotification.json │ │ ├── signedRenewalInfo.json │ │ ├── signedRescindConsentNotification.json │ │ ├── signedSummaryNotification.json │ │ ├── signedTransaction.json │ │ ├── signedTransactionWithRevocation.json │ │ ├── transactionHistoryResponse.json │ │ ├── transactionHistoryResponseWithMalformedAppAppleId.json │ │ ├── transactionHistoryResponseWithMalformedEnvironment.json │ │ ├── transactionIdNotFoundError.json │ │ ├── transactionIdNotOriginalTransactionId.json │ │ └── transactionInfoResponse.json │ └── xcode/ │ ├── xcode-app-receipt-empty │ ├── xcode-app-receipt-with-transaction │ ├── xcode-signed-app-transaction │ ├── xcode-signed-renewal-info │ └── xcode-signed-transaction ├── test_advanced_commerce_models.py ├── test_api_client.py ├── test_api_client_async.py ├── test_app_data.py ├── test_decoded_payloads.py ├── test_jws_signature_creator.py ├── test_payload_verification.py ├── test_promotional_offer_signature_creator.py ├── test_receipt_utility.py ├── test_retention_messaging.py ├── test_x509_verifiction.py ├── test_xcode_signed_data.py └── util.py