@jeremybarbet/apple-api-types
Version:
Typescript definitions for Apple API services.
370 lines (307 loc) • 9.82 kB
text/typescript
/**
* @link https://developer.apple.com/documentation/appstoreserverapi
*/
import {
type AutoRenewStatus,
type ExpirationIntent,
type InAppOwnershipType,
type NotificationSubtype,
type NotificationType,
type OfferType,
type OrderLookupStatus,
type PriceIncreaseStatus,
type SubscriptionStatus,
type Type,
} from './app-store-server.enum';
import { type Environment } from './global.interface';
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/jwsdecodedheader
*/
export interface JWSDecodedHeader {
/**
* The algorithm used for signing the JSON Web Signature (JWS).
*/
alg: string;
/**
* The X.509 certificate chain that corresponds to the key that the App Store used to secure the JWS.
*/
x5c: string[];
}
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
*/
export type JWSTransaction = string;
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
*/
export type JWSRenewalInfo = string;
/**
* @link https://developer.apple.com/documentation/appstoreservernotifications/data
*/
interface Data {
/**
* The unique identifier of the app that the notification applies to.This property is available for apps that are downloaded from the App Store; it isn’t present in the sandbox environment.
*/
appAppleId: number;
/**
* The bundle identifier of the app.
*/
bundleId: string;
/**
* The version of the build that identifies an iteration of the bundle.
*/
bundleVersion: string;
/**
* The server environment that the notification applies to, either sandbox or production.
*/
environment: Environment;
/**
* Subscription renewal information signed by the App Store, in JSON Web Signature format.
*/
signedRenewalInfo: JWSRenewalInfo;
/**
* Transaction information signed by the App Store, in JSON Web Signature format.
*/
signedTransactionInfo: JWSTransaction;
}
/**
* @link https://developer.apple.com/documentation/appstoreservernotifications/responsebodyv2decodedpayload
*/
export interface ResponseBodyV2DecodedPayload {
/**
* The in-app purchase event for which the App Store sent this version 2 notification.
* https://developer.apple.com/documentation/appstoreservernotifications/notificationtype
*/
notificationType: NotificationType;
/**
* Additional information that identifies the notification event, or an empty string. The subtype applies only to select version 2 notifications.
* https://developer.apple.com/documentation/appstoreservernotifications/subtype
*/
subtype: NotificationSubtype;
/**
* A unique identifier for the notification. Use this value to identify a duplicate notification.
*/
notificationUUID: string;
/**
* The object that contains the app metadata and signed renewal and transaction information.
*/
data: Data;
/**
* A string that indicates the App Store Server Notification version number.
*/
version: string;
/**
* The UNIX time, in milliseconds, that the App Store signed the JSON Web Signature data.
*/
signedDate: string;
}
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/jwstransactiondecodedpayload
*/
export interface JWSTransactionDecodedPayload {
/**
* The UUID you created to identify the user’s in-app account when they made the purchase. If your app doesn’t provide an appAccountToken, this string is empty. For more information, see appAccountToken(_:).
*/
appAccountToken?: string;
/**
* The bundle identifier of the app.
*/
bundleId: string;
/**
* The server environment, either sandbox or production.
*/
environment: Environment;
/**
* The UNIX time, in milliseconds, the subscription expires or renews.
*/
expiresDate?: number;
/**
* A string that describes whether the transaction was purchased by the user, or is available to them through Family Sharing.
*/
inAppOwnershipType: InAppOwnershipType;
/**
* The Boolean value that indicates whether the user upgraded to another subscription.
*/
isUpgraded?: boolean;
/**
* The identifier that contains the promo code or the promotional offer identifier.
*/
offerIdentifier?: string;
/**
* A value that represents the promotional offer type.
*/
offerType?: OfferType;
/**
* The UNIX time, in milliseconds, that represents the purchase date of the original transaction identifier.
*/
originalPurchaseDate: number;
/**
* The transaction identifier of the original purchase.
*/
originalTransactionId: string;
/**
* The unique identifier of the product.
*/
productId: string;
/**
* The UNIX time, in milliseconds, that the App Store charged the user’s account for a purchase, restored product, subscription, or subscription renewal after a lapse.
*/
purchaseDate: number;
/**
* The number of consumable products the user purchased.
*/
quantity: number;
/**
* The UNIX time, in milliseconds, that Apple Support refunded a transaction.
*/
revocationDate?: number;
/**
* The reason that the App Store refunded the transaction or revoked it from family sharing.
*/
revocationReason?: number;
/**
* The UNIX time, in milliseconds, that the App Store signed the JSON Web Signature (JWS) data.
*/
signedDate: number;
/**
* The identifier of the subscription group the subscription belongs to.
*/
subscriptionGroupIdentifier?: string;
/**
* The unique identifier of the transaction.
*/
transactionId: string;
/**
* The type of the in-app purchase.
*/
type: Type;
/**
* A unique ID that identifies subscription purchase events across devices, including subscription renewals.
*/
webOrderLineItemId: string;
}
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfodecodedpayload
*/
export interface JWSRenewalInfoDecodedPayload {
/**
* The identifier of the product that renews at the next billing period.
*/
autoRenewProductId: string;
/**
* The renewal status of the auto-renewable subscription.
*/
autoRenewStatus: AutoRenewStatus;
/**
* The server environment, either sandbox or production.
*/
environment: Environment;
/**
* The reason the subscription expired.
*/
expirationIntent?: ExpirationIntent;
/**
* The time when the grace period for subscription renewals expires.
*/
gracePeriodExpiresDate?: number;
/**
* The Boolean value that indicates whether the App Store is attempting to automatically renew an expired subscription.
*/
isInBillingRetryPeriod?: boolean;
/**
* The offer code or promotional offer identifier.
*/
offerIdentifier?: string;
/**
* The type of the subscription offer.
*/
offerType?: OfferType;
/**
* The transaction identifier of the original purchase associated with this transaction.
*/
originalTransactionId: string;
/**
* The status that indicates whether the auto-renewable subscription is subject to a price increase.
*/
priceIncreaseStatus?: PriceIncreaseStatus;
/**
* The unique identifier of the product.
*/
productId: string;
/**
* The earliest start date of an auto-renewable subscription in a series of subscription purchases that ignores all lapses of paid service that are 60 days or less.
*/
recentSubscriptionStartDate: number;
/**
* The UNIX time, in milliseconds, that the App Store signed the JSON Web Signature data.
*/
signedDate: number;
}
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/lasttransactionsitem
*/
export interface LastTransactionsItem {
/**
* The original transaction identifier of the auto-renewable subscription.
*/
originalTransactionId: string;
/**
* The status of the auto-renewable subscription.
*/
status: SubscriptionStatus;
/**
* The subscription renewal information signed by the App Store, in JSON Web Signature (JWS) format.
*/
signedRenewalInfo: JWSRenewalInfo;
/**
* The transaction information signed by the App Store, in JWS format.
*/
signedTransactionInfo: JWSTransaction;
}
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/subscriptiongroupidentifieritem
*/
interface SubscriptionGroupIdentifierItem {
/**
* The subscription group identifier of the auto-renewable subscriptions in the lastTransactions array.
*/
subscriptionGroupIdentifier: string;
/**
* An array of the most recent App Store-signed transaction information and App Store-signed renewal information for all auto-renewable subscriptions in the subscription group.
*/
lastTransactions: LastTransactionsItem[];
}
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/statusresponse
*/
export interface StatusResponse {
/**
* An array of information for auto-renewable subscriptions, including App Store-signed transaction information and App Store-signed renewal information.
*/
data: SubscriptionGroupIdentifierItem[];
/**
* The server environment, sandbox or production, in which the App Store generated the response.
*/
environment: Environment;
/**
* Your app’s App Store identifier.
*/
appAppleId: string;
/**
* Your app’s bundle identifier.
*/
bundleId: string;
}
/**
* @link https://developer.apple.com/documentation/appstoreserverapi/orderlookupresponse
*/
export interface OrderLookupResponse {
/**
* The status that indicates whether the order ID is valid.
*/
status: OrderLookupStatus;
/**
* An array of in-app purchase transactions that are part of order, signed by Apple, in JSON Web Signature format.
*/
signedTransactions: JWSTransaction[];
}