Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions appstoreserverlibrary/models/v2/AccountTenure.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class AccountTenure(Enum):
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""
UNDECLARED = 0
ZERO_TO_THREE_DAYS = 1
THREE_DAYS_TO_TEN_DAYS = 2
TEN_DAYS_TO_THIRTY_DAYS = 3
THIRTY_DAYS_TO_NINETY_DAYS = 4
NINETY_DAYS_TO_ONE_HUNDRED_EIGHTY_DAYS = 5
ONE_HUNDRED_EIGHTY_DAYS_TO_THREE_HUNDRED_SIXTY_FIVE_DAYS = 6
GREATER_THAN_THREE_HUNDRED_SIXTY_FIVE_DAYS = 7
94 changes: 94 additions & 0 deletions appstoreserverlibrary/models/v2/AppTransaction.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment


class AppTransaction(Model):
"""
Information that represents the customer’s purchase of the app, cryptographically signed by the App Store.

https://developer.apple.com/documentation/storekit/apptransaction
"""

receiptType: Optional[Environment] = Field(default=None)
"""
The server environment that signs the app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3963901-environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier the App Store uses to identify the app.

https://developer.apple.com/documentation/storekit/apptransaction/3954436-appid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954439-bundleid
"""

applicationVersion: Optional[str] = Field(default=None)
"""
The app version that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954437-appversion
"""

versionExternalIdentifier: Optional[int] = Field(default=None)
"""
The version external identifier of the app

https://developer.apple.com/documentation/storekit/apptransaction/3954438-appversionid
"""

receiptCreationDate: Optional[int] = Field(default=None)
"""
The date that the App Store signed the JWS app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3954449-signeddate
"""

originalPurchaseDate: Optional[int] = Field(default=None)
"""
The date the user originally purchased the app from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954448-originalpurchasedate
"""

originalApplicationVersion: Optional[str] = Field(default=None)
"""
The app version that the user originally purchased from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954447-originalappversion
"""

deviceVerification: Optional[str] = Field(default=None)
"""
The Base64 device verification value to use to verify whether the app transaction belongs to the device.

https://developer.apple.com/documentation/storekit/apptransaction/3954441-deviceverification
"""

deviceVerificationNonce: Optional[str] = Field(default=None)
"""
The UUID used to compute the device verification value.

https://developer.apple.com/documentation/storekit/apptransaction/3954442-deviceverificationnonce
"""

preorderDate: Optional[int] = Field(default=None)
"""
The date the customer placed an order for the app before it's available in the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/4013175-preorderdate
"""
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/AutoRenewStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class AutoRenewStatus(Enum):
"""
The renewal status for an auto-renewable subscription.

https://developer.apple.com/documentation/appstoreserverapi/autorenewstatus
"""
OFF = 0
ON = 1
5 changes: 5 additions & 0 deletions appstoreserverlibrary/models/v2/Base.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
from pydantic import BaseModel


class Model(BaseModel):
...
26 changes: 26 additions & 0 deletions appstoreserverlibrary/models/v2/CheckTestNotificationResponse.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import List, Optional

from pydantic import Field


class CheckTestNotificationResponse:
"""
A response that contains the contents of the test notification sent by the App Store server and the result from your server.

https://developer.apple.com/documentation/appstoreserverapi/checktestnotificationresponse
"""

signedPayload: Optional[str] = Field(default=None)
"""
A cryptographically signed payload, in JSON Web Signature (JWS) format, containing the response body for a version 2 notification.

https://developer.apple.com/documentation/appstoreservernotifications/signedpayload
"""

sendAttempts: Optional[List[SendAttemptItem]] = Field(default=None)
"""
An array of information the App Store server records for its attempts to send the TEST notification to your server. The array may contain a maximum of six sendAttemptItem objects.

https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem
"""
102 changes: 102 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionRequest.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .AccountTenure import AccountTenure
from .Base import Model

from .ConsumptionStatus import ConsumptionStatus
from .DeliveryStatus import DeliveryStatus
from .LifetimeDollarsPurchased import LifetimeDollarsPurchased
from .LifetimeDollarsRefunded import LifetimeDollarsRefunded
from .Platform import Platform
from .PlayTime import PlayTime
from .UserStatus import UserStatus


class ConsumptionRequest(Model):
"""
The request body containing consumption information.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

customerConsented: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether the customer consented to provide consumption data to the App Store.

https://developer.apple.com/documentation/appstoreserverapi/customerconsented
"""

consumptionStatus: Optional[ConsumptionStatus] = Field(default=None)
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""

platform: Optional[Platform] = Field(default=None)
"""
A value that indicates the platform on which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/platform
"""

sampleContentProvided: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether you provided, prior to its purchase, a free sample or trial of the content, or information about its functionality.

https://developer.apple.com/documentation/appstoreserverapi/samplecontentprovided
"""

deliveryStatus: Optional[DeliveryStatus] = Field(default=None)
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""

appAccountToken: Optional[str] = Field(default=None)
"""
The UUID that an app optionally generates to map a customer's in-app purchase with its resulting App Store transaction.

https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken
"""

accountTenure: Optional[AccountTenure] = Field(default=None)
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""

playTime: Optional[PlayTime] = Field(default=None)
"""
A value that indicates the amount of time that the customer used the app.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

lifetimeDollarsRefunded: Optional[LifetimeDollarsRefunded] = Field(default=None)
"""
A value that indicates the total amount, in USD, of refunds the customer has received, in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarsrefunded
"""

lifetimeDollarsPurchased: Optional[LifetimeDollarsPurchased] = Field(default=None)
"""
A value that indicates the total amount, in USD, of in-app purchases the customer has made in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarspurchased
"""

userStatus: Optional[UserStatus] = Field(default=None)
"""
The status of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/userstatus
"""
14 changes: 14 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ConsumptionStatus(Enum):
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""
UNDECLARED = 0
NOT_CONSUMED = 1
PARTIALLY_CONSUMED = 2
FULLY_CONSUMED = 3
67 changes: 67 additions & 0 deletions appstoreserverlibrary/models/v2/Data.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment
from .Status import Status


class Data(Model):
"""
The app metadata and the signed renewal and transaction information.

https://developer.apple.com/documentation/appstoreservernotifications/data
"""

environment: Optional[Environment] = Field(default=None)
"""
The server environment that the notification applies to, either sandbox or production.

https://developer.apple.com/documentation/appstoreservernotifications/environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier of an app in the App Store.

https://developer.apple.com/documentation/appstoreservernotifications/appappleid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier of an app.

https://developer.apple.com/documentation/appstoreserverapi/bundleid
"""

bundleVersion: Optional[str] = Field(default=None)
"""
The version of the build that identifies an iteration of the bundle.

https://developer.apple.com/documentation/appstoreservernotifications/bundleversion
"""

signedTransactionInfo: Optional[str] = Field(default=None)
"""
Transaction information signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwstransaction
"""

signedRenewalInfo: Optional[str] = Field(default=None)
"""
Subscription renewal information, signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
"""

status: Optional[Status] = Field(default=None)
"""
The status of an auto-renewable subscription as of the signedDate in the responseBodyV2DecodedPayload.

https://developer.apple.com/documentation/appstoreservernotifications/status
"""
17 changes: 17 additions & 0 deletions appstoreserverlibrary/models/v2/DeliveryStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class DeliveryStatus(Enum):
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""
DELIVERED_AND_WORKING_PROPERLY = 0
DID_NOT_DELIVER_DUE_TO_QUALITY_ISSUE = 1
DELIVERED_WRONG_ITEM = 2
DID_NOT_DELIVER_DUE_TO_SERVER_OUTAGE = 3
DID_NOT_DELIVER_DUE_TO_IN_GAME_CURRENCY_CHANGE = 4
DID_NOT_DELIVER_FOR_OTHER_REASON = 5
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/Environment.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class Environment(str, Enum):
"""
The server environment, either sandbox or production.

https://developer.apple.com/documentation/appstoreserverapi/environment
"""
SANDBOX = "Sandbox"
PRODUCTION = "Production"
15 changes: 15 additions & 0 deletions appstoreserverlibrary/models/v2/ExpirationIntent.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ExpirationIntent(Enum):
"""
The reason an auto-renewable subscription expired.

https://developer.apple.com/documentation/appstoreserverapi/expirationintent
"""
CUSTOMER_CANCELLED = 1
BILLING_ERROR = 2
CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = 3
PRODUCT_NOT_AVAILABLE = 4
OTHER = 5
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions appstoreserverlibrary/models/v2/AccountTenure.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class AccountTenure(Enum):
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""
UNDECLARED = 0
ZERO_TO_THREE_DAYS = 1
THREE_DAYS_TO_TEN_DAYS = 2
TEN_DAYS_TO_THIRTY_DAYS = 3
THIRTY_DAYS_TO_NINETY_DAYS = 4
NINETY_DAYS_TO_ONE_HUNDRED_EIGHTY_DAYS = 5
ONE_HUNDRED_EIGHTY_DAYS_TO_THREE_HUNDRED_SIXTY_FIVE_DAYS = 6
GREATER_THAN_THREE_HUNDRED_SIXTY_FIVE_DAYS = 7
94 changes: 94 additions & 0 deletions appstoreserverlibrary/models/v2/AppTransaction.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment


class AppTransaction(Model):
"""
Information that represents the customer’s purchase of the app, cryptographically signed by the App Store.

https://developer.apple.com/documentation/storekit/apptransaction
"""

receiptType: Optional[Environment] = Field(default=None)
"""
The server environment that signs the app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3963901-environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier the App Store uses to identify the app.

https://developer.apple.com/documentation/storekit/apptransaction/3954436-appid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954439-bundleid
"""

applicationVersion: Optional[str] = Field(default=None)
"""
The app version that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954437-appversion
"""

versionExternalIdentifier: Optional[int] = Field(default=None)
"""
The version external identifier of the app

https://developer.apple.com/documentation/storekit/apptransaction/3954438-appversionid
"""

receiptCreationDate: Optional[int] = Field(default=None)
"""
The date that the App Store signed the JWS app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3954449-signeddate
"""

originalPurchaseDate: Optional[int] = Field(default=None)
"""
The date the user originally purchased the app from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954448-originalpurchasedate
"""

originalApplicationVersion: Optional[str] = Field(default=None)
"""
The app version that the user originally purchased from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954447-originalappversion
"""

deviceVerification: Optional[str] = Field(default=None)
"""
The Base64 device verification value to use to verify whether the app transaction belongs to the device.

https://developer.apple.com/documentation/storekit/apptransaction/3954441-deviceverification
"""

deviceVerificationNonce: Optional[str] = Field(default=None)
"""
The UUID used to compute the device verification value.

https://developer.apple.com/documentation/storekit/apptransaction/3954442-deviceverificationnonce
"""

preorderDate: Optional[int] = Field(default=None)
"""
The date the customer placed an order for the app before it's available in the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/4013175-preorderdate
"""
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/AutoRenewStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class AutoRenewStatus(Enum):
"""
The renewal status for an auto-renewable subscription.

https://developer.apple.com/documentation/appstoreserverapi/autorenewstatus
"""
OFF = 0
ON = 1
5 changes: 5 additions & 0 deletions appstoreserverlibrary/models/v2/Base.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
from pydantic import BaseModel


class Model(BaseModel):
...
26 changes: 26 additions & 0 deletions appstoreserverlibrary/models/v2/CheckTestNotificationResponse.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import List, Optional

from pydantic import Field


class CheckTestNotificationResponse:
"""
A response that contains the contents of the test notification sent by the App Store server and the result from your server.

https://developer.apple.com/documentation/appstoreserverapi/checktestnotificationresponse
"""

signedPayload: Optional[str] = Field(default=None)
"""
A cryptographically signed payload, in JSON Web Signature (JWS) format, containing the response body for a version 2 notification.

https://developer.apple.com/documentation/appstoreservernotifications/signedpayload
"""

sendAttempts: Optional[List[SendAttemptItem]] = Field(default=None)
"""
An array of information the App Store server records for its attempts to send the TEST notification to your server. The array may contain a maximum of six sendAttemptItem objects.

https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem
"""
102 changes: 102 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionRequest.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .AccountTenure import AccountTenure
from .Base import Model

from .ConsumptionStatus import ConsumptionStatus
from .DeliveryStatus import DeliveryStatus
from .LifetimeDollarsPurchased import LifetimeDollarsPurchased
from .LifetimeDollarsRefunded import LifetimeDollarsRefunded
from .Platform import Platform
from .PlayTime import PlayTime
from .UserStatus import UserStatus


class ConsumptionRequest(Model):
"""
The request body containing consumption information.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

customerConsented: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether the customer consented to provide consumption data to the App Store.

https://developer.apple.com/documentation/appstoreserverapi/customerconsented
"""

consumptionStatus: Optional[ConsumptionStatus] = Field(default=None)
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""

platform: Optional[Platform] = Field(default=None)
"""
A value that indicates the platform on which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/platform
"""

sampleContentProvided: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether you provided, prior to its purchase, a free sample or trial of the content, or information about its functionality.

https://developer.apple.com/documentation/appstoreserverapi/samplecontentprovided
"""

deliveryStatus: Optional[DeliveryStatus] = Field(default=None)
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""

appAccountToken: Optional[str] = Field(default=None)
"""
The UUID that an app optionally generates to map a customer's in-app purchase with its resulting App Store transaction.

https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken
"""

accountTenure: Optional[AccountTenure] = Field(default=None)
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""

playTime: Optional[PlayTime] = Field(default=None)
"""
A value that indicates the amount of time that the customer used the app.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

lifetimeDollarsRefunded: Optional[LifetimeDollarsRefunded] = Field(default=None)
"""
A value that indicates the total amount, in USD, of refunds the customer has received, in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarsrefunded
"""

lifetimeDollarsPurchased: Optional[LifetimeDollarsPurchased] = Field(default=None)
"""
A value that indicates the total amount, in USD, of in-app purchases the customer has made in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarspurchased
"""

userStatus: Optional[UserStatus] = Field(default=None)
"""
The status of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/userstatus
"""
14 changes: 14 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ConsumptionStatus(Enum):
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""
UNDECLARED = 0
NOT_CONSUMED = 1
PARTIALLY_CONSUMED = 2
FULLY_CONSUMED = 3
67 changes: 67 additions & 0 deletions appstoreserverlibrary/models/v2/Data.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment
from .Status import Status


class Data(Model):
"""
The app metadata and the signed renewal and transaction information.

https://developer.apple.com/documentation/appstoreservernotifications/data
"""

environment: Optional[Environment] = Field(default=None)
"""
The server environment that the notification applies to, either sandbox or production.

https://developer.apple.com/documentation/appstoreservernotifications/environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier of an app in the App Store.

https://developer.apple.com/documentation/appstoreservernotifications/appappleid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier of an app.

https://developer.apple.com/documentation/appstoreserverapi/bundleid
"""

bundleVersion: Optional[str] = Field(default=None)
"""
The version of the build that identifies an iteration of the bundle.

https://developer.apple.com/documentation/appstoreservernotifications/bundleversion
"""

signedTransactionInfo: Optional[str] = Field(default=None)
"""
Transaction information signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwstransaction
"""

signedRenewalInfo: Optional[str] = Field(default=None)
"""
Subscription renewal information, signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
"""

status: Optional[Status] = Field(default=None)
"""
The status of an auto-renewable subscription as of the signedDate in the responseBodyV2DecodedPayload.

https://developer.apple.com/documentation/appstoreservernotifications/status
"""
17 changes: 17 additions & 0 deletions appstoreserverlibrary/models/v2/DeliveryStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class DeliveryStatus(Enum):
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""
DELIVERED_AND_WORKING_PROPERLY = 0
DID_NOT_DELIVER_DUE_TO_QUALITY_ISSUE = 1
DELIVERED_WRONG_ITEM = 2
DID_NOT_DELIVER_DUE_TO_SERVER_OUTAGE = 3
DID_NOT_DELIVER_DUE_TO_IN_GAME_CURRENCY_CHANGE = 4
DID_NOT_DELIVER_FOR_OTHER_REASON = 5
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/Environment.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class Environment(str, Enum):
"""
The server environment, either sandbox or production.

https://developer.apple.com/documentation/appstoreserverapi/environment
"""
SANDBOX = "Sandbox"
PRODUCTION = "Production"
15 changes: 15 additions & 0 deletions appstoreserverlibrary/models/v2/ExpirationIntent.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ExpirationIntent(Enum):
"""
The reason an auto-renewable subscription expired.

https://developer.apple.com/documentation/appstoreserverapi/expirationintent
"""
CUSTOMER_CANCELLED = 1
BILLING_ERROR = 2
CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = 3
PRODUCT_NOT_AVAILABLE = 4
OTHER = 5
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions appstoreserverlibrary/models/v2/AccountTenure.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class AccountTenure(Enum):
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""
UNDECLARED = 0
ZERO_TO_THREE_DAYS = 1
THREE_DAYS_TO_TEN_DAYS = 2
TEN_DAYS_TO_THIRTY_DAYS = 3
THIRTY_DAYS_TO_NINETY_DAYS = 4
NINETY_DAYS_TO_ONE_HUNDRED_EIGHTY_DAYS = 5
ONE_HUNDRED_EIGHTY_DAYS_TO_THREE_HUNDRED_SIXTY_FIVE_DAYS = 6
GREATER_THAN_THREE_HUNDRED_SIXTY_FIVE_DAYS = 7
94 changes: 94 additions & 0 deletions appstoreserverlibrary/models/v2/AppTransaction.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment


class AppTransaction(Model):
"""
Information that represents the customer’s purchase of the app, cryptographically signed by the App Store.

https://developer.apple.com/documentation/storekit/apptransaction
"""

receiptType: Optional[Environment] = Field(default=None)
"""
The server environment that signs the app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3963901-environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier the App Store uses to identify the app.

https://developer.apple.com/documentation/storekit/apptransaction/3954436-appid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954439-bundleid
"""

applicationVersion: Optional[str] = Field(default=None)
"""
The app version that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954437-appversion
"""

versionExternalIdentifier: Optional[int] = Field(default=None)
"""
The version external identifier of the app

https://developer.apple.com/documentation/storekit/apptransaction/3954438-appversionid
"""

receiptCreationDate: Optional[int] = Field(default=None)
"""
The date that the App Store signed the JWS app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3954449-signeddate
"""

originalPurchaseDate: Optional[int] = Field(default=None)
"""
The date the user originally purchased the app from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954448-originalpurchasedate
"""

originalApplicationVersion: Optional[str] = Field(default=None)
"""
The app version that the user originally purchased from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954447-originalappversion
"""

deviceVerification: Optional[str] = Field(default=None)
"""
The Base64 device verification value to use to verify whether the app transaction belongs to the device.

https://developer.apple.com/documentation/storekit/apptransaction/3954441-deviceverification
"""

deviceVerificationNonce: Optional[str] = Field(default=None)
"""
The UUID used to compute the device verification value.

https://developer.apple.com/documentation/storekit/apptransaction/3954442-deviceverificationnonce
"""

preorderDate: Optional[int] = Field(default=None)
"""
The date the customer placed an order for the app before it's available in the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/4013175-preorderdate
"""
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/AutoRenewStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class AutoRenewStatus(Enum):
"""
The renewal status for an auto-renewable subscription.

https://developer.apple.com/documentation/appstoreserverapi/autorenewstatus
"""
OFF = 0
ON = 1
5 changes: 5 additions & 0 deletions appstoreserverlibrary/models/v2/Base.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
from pydantic import BaseModel


class Model(BaseModel):
...
26 changes: 26 additions & 0 deletions appstoreserverlibrary/models/v2/CheckTestNotificationResponse.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import List, Optional

from pydantic import Field


class CheckTestNotificationResponse:
"""
A response that contains the contents of the test notification sent by the App Store server and the result from your server.

https://developer.apple.com/documentation/appstoreserverapi/checktestnotificationresponse
"""

signedPayload: Optional[str] = Field(default=None)
"""
A cryptographically signed payload, in JSON Web Signature (JWS) format, containing the response body for a version 2 notification.

https://developer.apple.com/documentation/appstoreservernotifications/signedpayload
"""

sendAttempts: Optional[List[SendAttemptItem]] = Field(default=None)
"""
An array of information the App Store server records for its attempts to send the TEST notification to your server. The array may contain a maximum of six sendAttemptItem objects.

https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem
"""
102 changes: 102 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionRequest.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .AccountTenure import AccountTenure
from .Base import Model

from .ConsumptionStatus import ConsumptionStatus
from .DeliveryStatus import DeliveryStatus
from .LifetimeDollarsPurchased import LifetimeDollarsPurchased
from .LifetimeDollarsRefunded import LifetimeDollarsRefunded
from .Platform import Platform
from .PlayTime import PlayTime
from .UserStatus import UserStatus


class ConsumptionRequest(Model):
"""
The request body containing consumption information.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

customerConsented: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether the customer consented to provide consumption data to the App Store.

https://developer.apple.com/documentation/appstoreserverapi/customerconsented
"""

consumptionStatus: Optional[ConsumptionStatus] = Field(default=None)
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""

platform: Optional[Platform] = Field(default=None)
"""
A value that indicates the platform on which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/platform
"""

sampleContentProvided: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether you provided, prior to its purchase, a free sample or trial of the content, or information about its functionality.

https://developer.apple.com/documentation/appstoreserverapi/samplecontentprovided
"""

deliveryStatus: Optional[DeliveryStatus] = Field(default=None)
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""

appAccountToken: Optional[str] = Field(default=None)
"""
The UUID that an app optionally generates to map a customer's in-app purchase with its resulting App Store transaction.

https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken
"""

accountTenure: Optional[AccountTenure] = Field(default=None)
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""

playTime: Optional[PlayTime] = Field(default=None)
"""
A value that indicates the amount of time that the customer used the app.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

lifetimeDollarsRefunded: Optional[LifetimeDollarsRefunded] = Field(default=None)
"""
A value that indicates the total amount, in USD, of refunds the customer has received, in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarsrefunded
"""

lifetimeDollarsPurchased: Optional[LifetimeDollarsPurchased] = Field(default=None)
"""
A value that indicates the total amount, in USD, of in-app purchases the customer has made in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarspurchased
"""

userStatus: Optional[UserStatus] = Field(default=None)
"""
The status of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/userstatus
"""
14 changes: 14 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ConsumptionStatus(Enum):
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""
UNDECLARED = 0
NOT_CONSUMED = 1
PARTIALLY_CONSUMED = 2
FULLY_CONSUMED = 3
67 changes: 67 additions & 0 deletions appstoreserverlibrary/models/v2/Data.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment
from .Status import Status


class Data(Model):
"""
The app metadata and the signed renewal and transaction information.

https://developer.apple.com/documentation/appstoreservernotifications/data
"""

environment: Optional[Environment] = Field(default=None)
"""
The server environment that the notification applies to, either sandbox or production.

https://developer.apple.com/documentation/appstoreservernotifications/environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier of an app in the App Store.

https://developer.apple.com/documentation/appstoreservernotifications/appappleid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier of an app.

https://developer.apple.com/documentation/appstoreserverapi/bundleid
"""

bundleVersion: Optional[str] = Field(default=None)
"""
The version of the build that identifies an iteration of the bundle.

https://developer.apple.com/documentation/appstoreservernotifications/bundleversion
"""

signedTransactionInfo: Optional[str] = Field(default=None)
"""
Transaction information signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwstransaction
"""

signedRenewalInfo: Optional[str] = Field(default=None)
"""
Subscription renewal information, signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
"""

status: Optional[Status] = Field(default=None)
"""
The status of an auto-renewable subscription as of the signedDate in the responseBodyV2DecodedPayload.

https://developer.apple.com/documentation/appstoreservernotifications/status
"""
17 changes: 17 additions & 0 deletions appstoreserverlibrary/models/v2/DeliveryStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class DeliveryStatus(Enum):
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""
DELIVERED_AND_WORKING_PROPERLY = 0
DID_NOT_DELIVER_DUE_TO_QUALITY_ISSUE = 1
DELIVERED_WRONG_ITEM = 2
DID_NOT_DELIVER_DUE_TO_SERVER_OUTAGE = 3
DID_NOT_DELIVER_DUE_TO_IN_GAME_CURRENCY_CHANGE = 4
DID_NOT_DELIVER_FOR_OTHER_REASON = 5
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/Environment.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class Environment(str, Enum):
"""
The server environment, either sandbox or production.

https://developer.apple.com/documentation/appstoreserverapi/environment
"""
SANDBOX = "Sandbox"
PRODUCTION = "Production"
15 changes: 15 additions & 0 deletions appstoreserverlibrary/models/v2/ExpirationIntent.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ExpirationIntent(Enum):
"""
The reason an auto-renewable subscription expired.

https://developer.apple.com/documentation/appstoreserverapi/expirationintent
"""
CUSTOMER_CANCELLED = 1
BILLING_ERROR = 2
CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = 3
PRODUCT_NOT_AVAILABLE = 4
OTHER = 5
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions appstoreserverlibrary/models/v2/AccountTenure.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class AccountTenure(Enum):
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""
UNDECLARED = 0
ZERO_TO_THREE_DAYS = 1
THREE_DAYS_TO_TEN_DAYS = 2
TEN_DAYS_TO_THIRTY_DAYS = 3
THIRTY_DAYS_TO_NINETY_DAYS = 4
NINETY_DAYS_TO_ONE_HUNDRED_EIGHTY_DAYS = 5
ONE_HUNDRED_EIGHTY_DAYS_TO_THREE_HUNDRED_SIXTY_FIVE_DAYS = 6
GREATER_THAN_THREE_HUNDRED_SIXTY_FIVE_DAYS = 7
94 changes: 94 additions & 0 deletions appstoreserverlibrary/models/v2/AppTransaction.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment


class AppTransaction(Model):
"""
Information that represents the customer’s purchase of the app, cryptographically signed by the App Store.

https://developer.apple.com/documentation/storekit/apptransaction
"""

receiptType: Optional[Environment] = Field(default=None)
"""
The server environment that signs the app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3963901-environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier the App Store uses to identify the app.

https://developer.apple.com/documentation/storekit/apptransaction/3954436-appid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954439-bundleid
"""

applicationVersion: Optional[str] = Field(default=None)
"""
The app version that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954437-appversion
"""

versionExternalIdentifier: Optional[int] = Field(default=None)
"""
The version external identifier of the app

https://developer.apple.com/documentation/storekit/apptransaction/3954438-appversionid
"""

receiptCreationDate: Optional[int] = Field(default=None)
"""
The date that the App Store signed the JWS app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3954449-signeddate
"""

originalPurchaseDate: Optional[int] = Field(default=None)
"""
The date the user originally purchased the app from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954448-originalpurchasedate
"""

originalApplicationVersion: Optional[str] = Field(default=None)
"""
The app version that the user originally purchased from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954447-originalappversion
"""

deviceVerification: Optional[str] = Field(default=None)
"""
The Base64 device verification value to use to verify whether the app transaction belongs to the device.

https://developer.apple.com/documentation/storekit/apptransaction/3954441-deviceverification
"""

deviceVerificationNonce: Optional[str] = Field(default=None)
"""
The UUID used to compute the device verification value.

https://developer.apple.com/documentation/storekit/apptransaction/3954442-deviceverificationnonce
"""

preorderDate: Optional[int] = Field(default=None)
"""
The date the customer placed an order for the app before it's available in the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/4013175-preorderdate
"""
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/AutoRenewStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class AutoRenewStatus(Enum):
"""
The renewal status for an auto-renewable subscription.

https://developer.apple.com/documentation/appstoreserverapi/autorenewstatus
"""
OFF = 0
ON = 1
5 changes: 5 additions & 0 deletions appstoreserverlibrary/models/v2/Base.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
from pydantic import BaseModel


class Model(BaseModel):
...
26 changes: 26 additions & 0 deletions appstoreserverlibrary/models/v2/CheckTestNotificationResponse.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import List, Optional

from pydantic import Field


class CheckTestNotificationResponse:
"""
A response that contains the contents of the test notification sent by the App Store server and the result from your server.

https://developer.apple.com/documentation/appstoreserverapi/checktestnotificationresponse
"""

signedPayload: Optional[str] = Field(default=None)
"""
A cryptographically signed payload, in JSON Web Signature (JWS) format, containing the response body for a version 2 notification.

https://developer.apple.com/documentation/appstoreservernotifications/signedpayload
"""

sendAttempts: Optional[List[SendAttemptItem]] = Field(default=None)
"""
An array of information the App Store server records for its attempts to send the TEST notification to your server. The array may contain a maximum of six sendAttemptItem objects.

https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem
"""
102 changes: 102 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionRequest.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .AccountTenure import AccountTenure
from .Base import Model

from .ConsumptionStatus import ConsumptionStatus
from .DeliveryStatus import DeliveryStatus
from .LifetimeDollarsPurchased import LifetimeDollarsPurchased
from .LifetimeDollarsRefunded import LifetimeDollarsRefunded
from .Platform import Platform
from .PlayTime import PlayTime
from .UserStatus import UserStatus


class ConsumptionRequest(Model):
"""
The request body containing consumption information.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

customerConsented: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether the customer consented to provide consumption data to the App Store.

https://developer.apple.com/documentation/appstoreserverapi/customerconsented
"""

consumptionStatus: Optional[ConsumptionStatus] = Field(default=None)
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""

platform: Optional[Platform] = Field(default=None)
"""
A value that indicates the platform on which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/platform
"""

sampleContentProvided: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether you provided, prior to its purchase, a free sample or trial of the content, or information about its functionality.

https://developer.apple.com/documentation/appstoreserverapi/samplecontentprovided
"""

deliveryStatus: Optional[DeliveryStatus] = Field(default=None)
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""

appAccountToken: Optional[str] = Field(default=None)
"""
The UUID that an app optionally generates to map a customer's in-app purchase with its resulting App Store transaction.

https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken
"""

accountTenure: Optional[AccountTenure] = Field(default=None)
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""

playTime: Optional[PlayTime] = Field(default=None)
"""
A value that indicates the amount of time that the customer used the app.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

lifetimeDollarsRefunded: Optional[LifetimeDollarsRefunded] = Field(default=None)
"""
A value that indicates the total amount, in USD, of refunds the customer has received, in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarsrefunded
"""

lifetimeDollarsPurchased: Optional[LifetimeDollarsPurchased] = Field(default=None)
"""
A value that indicates the total amount, in USD, of in-app purchases the customer has made in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarspurchased
"""

userStatus: Optional[UserStatus] = Field(default=None)
"""
The status of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/userstatus
"""
14 changes: 14 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ConsumptionStatus(Enum):
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""
UNDECLARED = 0
NOT_CONSUMED = 1
PARTIALLY_CONSUMED = 2
FULLY_CONSUMED = 3
67 changes: 67 additions & 0 deletions appstoreserverlibrary/models/v2/Data.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment
from .Status import Status


class Data(Model):
"""
The app metadata and the signed renewal and transaction information.

https://developer.apple.com/documentation/appstoreservernotifications/data
"""

environment: Optional[Environment] = Field(default=None)
"""
The server environment that the notification applies to, either sandbox or production.

https://developer.apple.com/documentation/appstoreservernotifications/environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier of an app in the App Store.

https://developer.apple.com/documentation/appstoreservernotifications/appappleid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier of an app.

https://developer.apple.com/documentation/appstoreserverapi/bundleid
"""

bundleVersion: Optional[str] = Field(default=None)
"""
The version of the build that identifies an iteration of the bundle.

https://developer.apple.com/documentation/appstoreservernotifications/bundleversion
"""

signedTransactionInfo: Optional[str] = Field(default=None)
"""
Transaction information signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwstransaction
"""

signedRenewalInfo: Optional[str] = Field(default=None)
"""
Subscription renewal information, signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
"""

status: Optional[Status] = Field(default=None)
"""
The status of an auto-renewable subscription as of the signedDate in the responseBodyV2DecodedPayload.

https://developer.apple.com/documentation/appstoreservernotifications/status
"""
17 changes: 17 additions & 0 deletions appstoreserverlibrary/models/v2/DeliveryStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class DeliveryStatus(Enum):
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""
DELIVERED_AND_WORKING_PROPERLY = 0
DID_NOT_DELIVER_DUE_TO_QUALITY_ISSUE = 1
DELIVERED_WRONG_ITEM = 2
DID_NOT_DELIVER_DUE_TO_SERVER_OUTAGE = 3
DID_NOT_DELIVER_DUE_TO_IN_GAME_CURRENCY_CHANGE = 4
DID_NOT_DELIVER_FOR_OTHER_REASON = 5
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/Environment.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class Environment(str, Enum):
"""
The server environment, either sandbox or production.

https://developer.apple.com/documentation/appstoreserverapi/environment
"""
SANDBOX = "Sandbox"
PRODUCTION = "Production"
15 changes: 15 additions & 0 deletions appstoreserverlibrary/models/v2/ExpirationIntent.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ExpirationIntent(Enum):
"""
The reason an auto-renewable subscription expired.

https://developer.apple.com/documentation/appstoreserverapi/expirationintent
"""
CUSTOMER_CANCELLED = 1
BILLING_ERROR = 2
CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = 3
PRODUCT_NOT_AVAILABLE = 4
OTHER = 5
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions appstoreserverlibrary/models/v2/AccountTenure.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class AccountTenure(Enum):
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""
UNDECLARED = 0
ZERO_TO_THREE_DAYS = 1
THREE_DAYS_TO_TEN_DAYS = 2
TEN_DAYS_TO_THIRTY_DAYS = 3
THIRTY_DAYS_TO_NINETY_DAYS = 4
NINETY_DAYS_TO_ONE_HUNDRED_EIGHTY_DAYS = 5
ONE_HUNDRED_EIGHTY_DAYS_TO_THREE_HUNDRED_SIXTY_FIVE_DAYS = 6
GREATER_THAN_THREE_HUNDRED_SIXTY_FIVE_DAYS = 7
94 changes: 94 additions & 0 deletions appstoreserverlibrary/models/v2/AppTransaction.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment


class AppTransaction(Model):
"""
Information that represents the customer’s purchase of the app, cryptographically signed by the App Store.

https://developer.apple.com/documentation/storekit/apptransaction
"""

receiptType: Optional[Environment] = Field(default=None)
"""
The server environment that signs the app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3963901-environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier the App Store uses to identify the app.

https://developer.apple.com/documentation/storekit/apptransaction/3954436-appid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954439-bundleid
"""

applicationVersion: Optional[str] = Field(default=None)
"""
The app version that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954437-appversion
"""

versionExternalIdentifier: Optional[int] = Field(default=None)
"""
The version external identifier of the app

https://developer.apple.com/documentation/storekit/apptransaction/3954438-appversionid
"""

receiptCreationDate: Optional[int] = Field(default=None)
"""
The date that the App Store signed the JWS app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3954449-signeddate
"""

originalPurchaseDate: Optional[int] = Field(default=None)
"""
The date the user originally purchased the app from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954448-originalpurchasedate
"""

originalApplicationVersion: Optional[str] = Field(default=None)
"""
The app version that the user originally purchased from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954447-originalappversion
"""

deviceVerification: Optional[str] = Field(default=None)
"""
The Base64 device verification value to use to verify whether the app transaction belongs to the device.

https://developer.apple.com/documentation/storekit/apptransaction/3954441-deviceverification
"""

deviceVerificationNonce: Optional[str] = Field(default=None)
"""
The UUID used to compute the device verification value.

https://developer.apple.com/documentation/storekit/apptransaction/3954442-deviceverificationnonce
"""

preorderDate: Optional[int] = Field(default=None)
"""
The date the customer placed an order for the app before it's available in the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/4013175-preorderdate
"""
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/AutoRenewStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class AutoRenewStatus(Enum):
"""
The renewal status for an auto-renewable subscription.

https://developer.apple.com/documentation/appstoreserverapi/autorenewstatus
"""
OFF = 0
ON = 1
5 changes: 5 additions & 0 deletions appstoreserverlibrary/models/v2/Base.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
from pydantic import BaseModel


class Model(BaseModel):
...
26 changes: 26 additions & 0 deletions appstoreserverlibrary/models/v2/CheckTestNotificationResponse.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import List, Optional

from pydantic import Field


class CheckTestNotificationResponse:
"""
A response that contains the contents of the test notification sent by the App Store server and the result from your server.

https://developer.apple.com/documentation/appstoreserverapi/checktestnotificationresponse
"""

signedPayload: Optional[str] = Field(default=None)
"""
A cryptographically signed payload, in JSON Web Signature (JWS) format, containing the response body for a version 2 notification.

https://developer.apple.com/documentation/appstoreservernotifications/signedpayload
"""

sendAttempts: Optional[List[SendAttemptItem]] = Field(default=None)
"""
An array of information the App Store server records for its attempts to send the TEST notification to your server. The array may contain a maximum of six sendAttemptItem objects.

https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem
"""
102 changes: 102 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionRequest.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .AccountTenure import AccountTenure
from .Base import Model

from .ConsumptionStatus import ConsumptionStatus
from .DeliveryStatus import DeliveryStatus
from .LifetimeDollarsPurchased import LifetimeDollarsPurchased
from .LifetimeDollarsRefunded import LifetimeDollarsRefunded
from .Platform import Platform
from .PlayTime import PlayTime
from .UserStatus import UserStatus


class ConsumptionRequest(Model):
"""
The request body containing consumption information.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

customerConsented: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether the customer consented to provide consumption data to the App Store.

https://developer.apple.com/documentation/appstoreserverapi/customerconsented
"""

consumptionStatus: Optional[ConsumptionStatus] = Field(default=None)
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""

platform: Optional[Platform] = Field(default=None)
"""
A value that indicates the platform on which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/platform
"""

sampleContentProvided: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether you provided, prior to its purchase, a free sample or trial of the content, or information about its functionality.

https://developer.apple.com/documentation/appstoreserverapi/samplecontentprovided
"""

deliveryStatus: Optional[DeliveryStatus] = Field(default=None)
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""

appAccountToken: Optional[str] = Field(default=None)
"""
The UUID that an app optionally generates to map a customer's in-app purchase with its resulting App Store transaction.

https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken
"""

accountTenure: Optional[AccountTenure] = Field(default=None)
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""

playTime: Optional[PlayTime] = Field(default=None)
"""
A value that indicates the amount of time that the customer used the app.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

lifetimeDollarsRefunded: Optional[LifetimeDollarsRefunded] = Field(default=None)
"""
A value that indicates the total amount, in USD, of refunds the customer has received, in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarsrefunded
"""

lifetimeDollarsPurchased: Optional[LifetimeDollarsPurchased] = Field(default=None)
"""
A value that indicates the total amount, in USD, of in-app purchases the customer has made in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarspurchased
"""

userStatus: Optional[UserStatus] = Field(default=None)
"""
The status of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/userstatus
"""
14 changes: 14 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ConsumptionStatus(Enum):
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""
UNDECLARED = 0
NOT_CONSUMED = 1
PARTIALLY_CONSUMED = 2
FULLY_CONSUMED = 3
67 changes: 67 additions & 0 deletions appstoreserverlibrary/models/v2/Data.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment
from .Status import Status


class Data(Model):
"""
The app metadata and the signed renewal and transaction information.

https://developer.apple.com/documentation/appstoreservernotifications/data
"""

environment: Optional[Environment] = Field(default=None)
"""
The server environment that the notification applies to, either sandbox or production.

https://developer.apple.com/documentation/appstoreservernotifications/environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier of an app in the App Store.

https://developer.apple.com/documentation/appstoreservernotifications/appappleid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier of an app.

https://developer.apple.com/documentation/appstoreserverapi/bundleid
"""

bundleVersion: Optional[str] = Field(default=None)
"""
The version of the build that identifies an iteration of the bundle.

https://developer.apple.com/documentation/appstoreservernotifications/bundleversion
"""

signedTransactionInfo: Optional[str] = Field(default=None)
"""
Transaction information signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwstransaction
"""

signedRenewalInfo: Optional[str] = Field(default=None)
"""
Subscription renewal information, signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
"""

status: Optional[Status] = Field(default=None)
"""
The status of an auto-renewable subscription as of the signedDate in the responseBodyV2DecodedPayload.

https://developer.apple.com/documentation/appstoreservernotifications/status
"""
17 changes: 17 additions & 0 deletions appstoreserverlibrary/models/v2/DeliveryStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class DeliveryStatus(Enum):
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""
DELIVERED_AND_WORKING_PROPERLY = 0
DID_NOT_DELIVER_DUE_TO_QUALITY_ISSUE = 1
DELIVERED_WRONG_ITEM = 2
DID_NOT_DELIVER_DUE_TO_SERVER_OUTAGE = 3
DID_NOT_DELIVER_DUE_TO_IN_GAME_CURRENCY_CHANGE = 4
DID_NOT_DELIVER_FOR_OTHER_REASON = 5
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/Environment.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class Environment(str, Enum):
"""
The server environment, either sandbox or production.

https://developer.apple.com/documentation/appstoreserverapi/environment
"""
SANDBOX = "Sandbox"
PRODUCTION = "Production"
15 changes: 15 additions & 0 deletions appstoreserverlibrary/models/v2/ExpirationIntent.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ExpirationIntent(Enum):
"""
The reason an auto-renewable subscription expired.

https://developer.apple.com/documentation/appstoreserverapi/expirationintent
"""
CUSTOMER_CANCELLED = 1
BILLING_ERROR = 2
CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = 3
PRODUCT_NOT_AVAILABLE = 4
OTHER = 5
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions appstoreserverlibrary/models/v2/AccountTenure.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class AccountTenure(Enum):
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""
UNDECLARED = 0
ZERO_TO_THREE_DAYS = 1
THREE_DAYS_TO_TEN_DAYS = 2
TEN_DAYS_TO_THIRTY_DAYS = 3
THIRTY_DAYS_TO_NINETY_DAYS = 4
NINETY_DAYS_TO_ONE_HUNDRED_EIGHTY_DAYS = 5
ONE_HUNDRED_EIGHTY_DAYS_TO_THREE_HUNDRED_SIXTY_FIVE_DAYS = 6
GREATER_THAN_THREE_HUNDRED_SIXTY_FIVE_DAYS = 7
94 changes: 94 additions & 0 deletions appstoreserverlibrary/models/v2/AppTransaction.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment


class AppTransaction(Model):
"""
Information that represents the customer’s purchase of the app, cryptographically signed by the App Store.

https://developer.apple.com/documentation/storekit/apptransaction
"""

receiptType: Optional[Environment] = Field(default=None)
"""
The server environment that signs the app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3963901-environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier the App Store uses to identify the app.

https://developer.apple.com/documentation/storekit/apptransaction/3954436-appid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954439-bundleid
"""

applicationVersion: Optional[str] = Field(default=None)
"""
The app version that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954437-appversion
"""

versionExternalIdentifier: Optional[int] = Field(default=None)
"""
The version external identifier of the app

https://developer.apple.com/documentation/storekit/apptransaction/3954438-appversionid
"""

receiptCreationDate: Optional[int] = Field(default=None)
"""
The date that the App Store signed the JWS app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3954449-signeddate
"""

originalPurchaseDate: Optional[int] = Field(default=None)
"""
The date the user originally purchased the app from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954448-originalpurchasedate
"""

originalApplicationVersion: Optional[str] = Field(default=None)
"""
The app version that the user originally purchased from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954447-originalappversion
"""

deviceVerification: Optional[str] = Field(default=None)
"""
The Base64 device verification value to use to verify whether the app transaction belongs to the device.

https://developer.apple.com/documentation/storekit/apptransaction/3954441-deviceverification
"""

deviceVerificationNonce: Optional[str] = Field(default=None)
"""
The UUID used to compute the device verification value.

https://developer.apple.com/documentation/storekit/apptransaction/3954442-deviceverificationnonce
"""

preorderDate: Optional[int] = Field(default=None)
"""
The date the customer placed an order for the app before it's available in the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/4013175-preorderdate
"""
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/AutoRenewStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class AutoRenewStatus(Enum):
"""
The renewal status for an auto-renewable subscription.

https://developer.apple.com/documentation/appstoreserverapi/autorenewstatus
"""
OFF = 0
ON = 1
5 changes: 5 additions & 0 deletions appstoreserverlibrary/models/v2/Base.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
from pydantic import BaseModel


class Model(BaseModel):
...
26 changes: 26 additions & 0 deletions appstoreserverlibrary/models/v2/CheckTestNotificationResponse.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import List, Optional

from pydantic import Field


class CheckTestNotificationResponse:
"""
A response that contains the contents of the test notification sent by the App Store server and the result from your server.

https://developer.apple.com/documentation/appstoreserverapi/checktestnotificationresponse
"""

signedPayload: Optional[str] = Field(default=None)
"""
A cryptographically signed payload, in JSON Web Signature (JWS) format, containing the response body for a version 2 notification.

https://developer.apple.com/documentation/appstoreservernotifications/signedpayload
"""

sendAttempts: Optional[List[SendAttemptItem]] = Field(default=None)
"""
An array of information the App Store server records for its attempts to send the TEST notification to your server. The array may contain a maximum of six sendAttemptItem objects.

https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem
"""
102 changes: 102 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionRequest.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .AccountTenure import AccountTenure
from .Base import Model

from .ConsumptionStatus import ConsumptionStatus
from .DeliveryStatus import DeliveryStatus
from .LifetimeDollarsPurchased import LifetimeDollarsPurchased
from .LifetimeDollarsRefunded import LifetimeDollarsRefunded
from .Platform import Platform
from .PlayTime import PlayTime
from .UserStatus import UserStatus


class ConsumptionRequest(Model):
"""
The request body containing consumption information.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

customerConsented: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether the customer consented to provide consumption data to the App Store.

https://developer.apple.com/documentation/appstoreserverapi/customerconsented
"""

consumptionStatus: Optional[ConsumptionStatus] = Field(default=None)
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""

platform: Optional[Platform] = Field(default=None)
"""
A value that indicates the platform on which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/platform
"""

sampleContentProvided: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether you provided, prior to its purchase, a free sample or trial of the content, or information about its functionality.

https://developer.apple.com/documentation/appstoreserverapi/samplecontentprovided
"""

deliveryStatus: Optional[DeliveryStatus] = Field(default=None)
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""

appAccountToken: Optional[str] = Field(default=None)
"""
The UUID that an app optionally generates to map a customer's in-app purchase with its resulting App Store transaction.

https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken
"""

accountTenure: Optional[AccountTenure] = Field(default=None)
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""

playTime: Optional[PlayTime] = Field(default=None)
"""
A value that indicates the amount of time that the customer used the app.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

lifetimeDollarsRefunded: Optional[LifetimeDollarsRefunded] = Field(default=None)
"""
A value that indicates the total amount, in USD, of refunds the customer has received, in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarsrefunded
"""

lifetimeDollarsPurchased: Optional[LifetimeDollarsPurchased] = Field(default=None)
"""
A value that indicates the total amount, in USD, of in-app purchases the customer has made in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarspurchased
"""

userStatus: Optional[UserStatus] = Field(default=None)
"""
The status of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/userstatus
"""
14 changes: 14 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ConsumptionStatus(Enum):
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""
UNDECLARED = 0
NOT_CONSUMED = 1
PARTIALLY_CONSUMED = 2
FULLY_CONSUMED = 3
67 changes: 67 additions & 0 deletions appstoreserverlibrary/models/v2/Data.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment
from .Status import Status


class Data(Model):
"""
The app metadata and the signed renewal and transaction information.

https://developer.apple.com/documentation/appstoreservernotifications/data
"""

environment: Optional[Environment] = Field(default=None)
"""
The server environment that the notification applies to, either sandbox or production.

https://developer.apple.com/documentation/appstoreservernotifications/environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier of an app in the App Store.

https://developer.apple.com/documentation/appstoreservernotifications/appappleid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier of an app.

https://developer.apple.com/documentation/appstoreserverapi/bundleid
"""

bundleVersion: Optional[str] = Field(default=None)
"""
The version of the build that identifies an iteration of the bundle.

https://developer.apple.com/documentation/appstoreservernotifications/bundleversion
"""

signedTransactionInfo: Optional[str] = Field(default=None)
"""
Transaction information signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwstransaction
"""

signedRenewalInfo: Optional[str] = Field(default=None)
"""
Subscription renewal information, signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
"""

status: Optional[Status] = Field(default=None)
"""
The status of an auto-renewable subscription as of the signedDate in the responseBodyV2DecodedPayload.

https://developer.apple.com/documentation/appstoreservernotifications/status
"""
17 changes: 17 additions & 0 deletions appstoreserverlibrary/models/v2/DeliveryStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class DeliveryStatus(Enum):
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""
DELIVERED_AND_WORKING_PROPERLY = 0
DID_NOT_DELIVER_DUE_TO_QUALITY_ISSUE = 1
DELIVERED_WRONG_ITEM = 2
DID_NOT_DELIVER_DUE_TO_SERVER_OUTAGE = 3
DID_NOT_DELIVER_DUE_TO_IN_GAME_CURRENCY_CHANGE = 4
DID_NOT_DELIVER_FOR_OTHER_REASON = 5
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/Environment.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class Environment(str, Enum):
"""
The server environment, either sandbox or production.

https://developer.apple.com/documentation/appstoreserverapi/environment
"""
SANDBOX = "Sandbox"
PRODUCTION = "Production"
15 changes: 15 additions & 0 deletions appstoreserverlibrary/models/v2/ExpirationIntent.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ExpirationIntent(Enum):
"""
The reason an auto-renewable subscription expired.

https://developer.apple.com/documentation/appstoreserverapi/expirationintent
"""
CUSTOMER_CANCELLED = 1
BILLING_ERROR = 2
CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = 3
PRODUCT_NOT_AVAILABLE = 4
OTHER = 5
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions appstoreserverlibrary/models/v2/AccountTenure.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class AccountTenure(Enum):
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""
UNDECLARED = 0
ZERO_TO_THREE_DAYS = 1
THREE_DAYS_TO_TEN_DAYS = 2
TEN_DAYS_TO_THIRTY_DAYS = 3
THIRTY_DAYS_TO_NINETY_DAYS = 4
NINETY_DAYS_TO_ONE_HUNDRED_EIGHTY_DAYS = 5
ONE_HUNDRED_EIGHTY_DAYS_TO_THREE_HUNDRED_SIXTY_FIVE_DAYS = 6
GREATER_THAN_THREE_HUNDRED_SIXTY_FIVE_DAYS = 7
94 changes: 94 additions & 0 deletions appstoreserverlibrary/models/v2/AppTransaction.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment


class AppTransaction(Model):
"""
Information that represents the customer’s purchase of the app, cryptographically signed by the App Store.

https://developer.apple.com/documentation/storekit/apptransaction
"""

receiptType: Optional[Environment] = Field(default=None)
"""
The server environment that signs the app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3963901-environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier the App Store uses to identify the app.

https://developer.apple.com/documentation/storekit/apptransaction/3954436-appid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954439-bundleid
"""

applicationVersion: Optional[str] = Field(default=None)
"""
The app version that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954437-appversion
"""

versionExternalIdentifier: Optional[int] = Field(default=None)
"""
The version external identifier of the app

https://developer.apple.com/documentation/storekit/apptransaction/3954438-appversionid
"""

receiptCreationDate: Optional[int] = Field(default=None)
"""
The date that the App Store signed the JWS app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3954449-signeddate
"""

originalPurchaseDate: Optional[int] = Field(default=None)
"""
The date the user originally purchased the app from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954448-originalpurchasedate
"""

originalApplicationVersion: Optional[str] = Field(default=None)
"""
The app version that the user originally purchased from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954447-originalappversion
"""

deviceVerification: Optional[str] = Field(default=None)
"""
The Base64 device verification value to use to verify whether the app transaction belongs to the device.

https://developer.apple.com/documentation/storekit/apptransaction/3954441-deviceverification
"""

deviceVerificationNonce: Optional[str] = Field(default=None)
"""
The UUID used to compute the device verification value.

https://developer.apple.com/documentation/storekit/apptransaction/3954442-deviceverificationnonce
"""

preorderDate: Optional[int] = Field(default=None)
"""
The date the customer placed an order for the app before it's available in the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/4013175-preorderdate
"""
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/AutoRenewStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class AutoRenewStatus(Enum):
"""
The renewal status for an auto-renewable subscription.

https://developer.apple.com/documentation/appstoreserverapi/autorenewstatus
"""
OFF = 0
ON = 1
5 changes: 5 additions & 0 deletions appstoreserverlibrary/models/v2/Base.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
from pydantic import BaseModel


class Model(BaseModel):
...
26 changes: 26 additions & 0 deletions appstoreserverlibrary/models/v2/CheckTestNotificationResponse.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import List, Optional

from pydantic import Field


class CheckTestNotificationResponse:
"""
A response that contains the contents of the test notification sent by the App Store server and the result from your server.

https://developer.apple.com/documentation/appstoreserverapi/checktestnotificationresponse
"""

signedPayload: Optional[str] = Field(default=None)
"""
A cryptographically signed payload, in JSON Web Signature (JWS) format, containing the response body for a version 2 notification.

https://developer.apple.com/documentation/appstoreservernotifications/signedpayload
"""

sendAttempts: Optional[List[SendAttemptItem]] = Field(default=None)
"""
An array of information the App Store server records for its attempts to send the TEST notification to your server. The array may contain a maximum of six sendAttemptItem objects.

https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem
"""
102 changes: 102 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionRequest.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .AccountTenure import AccountTenure
from .Base import Model

from .ConsumptionStatus import ConsumptionStatus
from .DeliveryStatus import DeliveryStatus
from .LifetimeDollarsPurchased import LifetimeDollarsPurchased
from .LifetimeDollarsRefunded import LifetimeDollarsRefunded
from .Platform import Platform
from .PlayTime import PlayTime
from .UserStatus import UserStatus


class ConsumptionRequest(Model):
"""
The request body containing consumption information.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

customerConsented: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether the customer consented to provide consumption data to the App Store.

https://developer.apple.com/documentation/appstoreserverapi/customerconsented
"""

consumptionStatus: Optional[ConsumptionStatus] = Field(default=None)
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""

platform: Optional[Platform] = Field(default=None)
"""
A value that indicates the platform on which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/platform
"""

sampleContentProvided: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether you provided, prior to its purchase, a free sample or trial of the content, or information about its functionality.

https://developer.apple.com/documentation/appstoreserverapi/samplecontentprovided
"""

deliveryStatus: Optional[DeliveryStatus] = Field(default=None)
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""

appAccountToken: Optional[str] = Field(default=None)
"""
The UUID that an app optionally generates to map a customer's in-app purchase with its resulting App Store transaction.

https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken
"""

accountTenure: Optional[AccountTenure] = Field(default=None)
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""

playTime: Optional[PlayTime] = Field(default=None)
"""
A value that indicates the amount of time that the customer used the app.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

lifetimeDollarsRefunded: Optional[LifetimeDollarsRefunded] = Field(default=None)
"""
A value that indicates the total amount, in USD, of refunds the customer has received, in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarsrefunded
"""

lifetimeDollarsPurchased: Optional[LifetimeDollarsPurchased] = Field(default=None)
"""
A value that indicates the total amount, in USD, of in-app purchases the customer has made in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarspurchased
"""

userStatus: Optional[UserStatus] = Field(default=None)
"""
The status of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/userstatus
"""
14 changes: 14 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ConsumptionStatus(Enum):
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""
UNDECLARED = 0
NOT_CONSUMED = 1
PARTIALLY_CONSUMED = 2
FULLY_CONSUMED = 3
67 changes: 67 additions & 0 deletions appstoreserverlibrary/models/v2/Data.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment
from .Status import Status


class Data(Model):
"""
The app metadata and the signed renewal and transaction information.

https://developer.apple.com/documentation/appstoreservernotifications/data
"""

environment: Optional[Environment] = Field(default=None)
"""
The server environment that the notification applies to, either sandbox or production.

https://developer.apple.com/documentation/appstoreservernotifications/environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier of an app in the App Store.

https://developer.apple.com/documentation/appstoreservernotifications/appappleid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier of an app.

https://developer.apple.com/documentation/appstoreserverapi/bundleid
"""

bundleVersion: Optional[str] = Field(default=None)
"""
The version of the build that identifies an iteration of the bundle.

https://developer.apple.com/documentation/appstoreservernotifications/bundleversion
"""

signedTransactionInfo: Optional[str] = Field(default=None)
"""
Transaction information signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwstransaction
"""

signedRenewalInfo: Optional[str] = Field(default=None)
"""
Subscription renewal information, signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
"""

status: Optional[Status] = Field(default=None)
"""
The status of an auto-renewable subscription as of the signedDate in the responseBodyV2DecodedPayload.

https://developer.apple.com/documentation/appstoreservernotifications/status
"""
17 changes: 17 additions & 0 deletions appstoreserverlibrary/models/v2/DeliveryStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class DeliveryStatus(Enum):
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""
DELIVERED_AND_WORKING_PROPERLY = 0
DID_NOT_DELIVER_DUE_TO_QUALITY_ISSUE = 1
DELIVERED_WRONG_ITEM = 2
DID_NOT_DELIVER_DUE_TO_SERVER_OUTAGE = 3
DID_NOT_DELIVER_DUE_TO_IN_GAME_CURRENCY_CHANGE = 4
DID_NOT_DELIVER_FOR_OTHER_REASON = 5
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/Environment.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class Environment(str, Enum):
"""
The server environment, either sandbox or production.

https://developer.apple.com/documentation/appstoreserverapi/environment
"""
SANDBOX = "Sandbox"
PRODUCTION = "Production"
15 changes: 15 additions & 0 deletions appstoreserverlibrary/models/v2/ExpirationIntent.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ExpirationIntent(Enum):
"""
The reason an auto-renewable subscription expired.

https://developer.apple.com/documentation/appstoreserverapi/expirationintent
"""
CUSTOMER_CANCELLED = 1
BILLING_ERROR = 2
CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = 3
PRODUCT_NOT_AVAILABLE = 4
OTHER = 5
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions appstoreserverlibrary/models/v2/AccountTenure.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class AccountTenure(Enum):
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""
UNDECLARED = 0
ZERO_TO_THREE_DAYS = 1
THREE_DAYS_TO_TEN_DAYS = 2
TEN_DAYS_TO_THIRTY_DAYS = 3
THIRTY_DAYS_TO_NINETY_DAYS = 4
NINETY_DAYS_TO_ONE_HUNDRED_EIGHTY_DAYS = 5
ONE_HUNDRED_EIGHTY_DAYS_TO_THREE_HUNDRED_SIXTY_FIVE_DAYS = 6
GREATER_THAN_THREE_HUNDRED_SIXTY_FIVE_DAYS = 7
94 changes: 94 additions & 0 deletions appstoreserverlibrary/models/v2/AppTransaction.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment


class AppTransaction(Model):
"""
Information that represents the customer’s purchase of the app, cryptographically signed by the App Store.

https://developer.apple.com/documentation/storekit/apptransaction
"""

receiptType: Optional[Environment] = Field(default=None)
"""
The server environment that signs the app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3963901-environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier the App Store uses to identify the app.

https://developer.apple.com/documentation/storekit/apptransaction/3954436-appid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954439-bundleid
"""

applicationVersion: Optional[str] = Field(default=None)
"""
The app version that the app transaction applies to.

https://developer.apple.com/documentation/storekit/apptransaction/3954437-appversion
"""

versionExternalIdentifier: Optional[int] = Field(default=None)
"""
The version external identifier of the app

https://developer.apple.com/documentation/storekit/apptransaction/3954438-appversionid
"""

receiptCreationDate: Optional[int] = Field(default=None)
"""
The date that the App Store signed the JWS app transaction.

https://developer.apple.com/documentation/storekit/apptransaction/3954449-signeddate
"""

originalPurchaseDate: Optional[int] = Field(default=None)
"""
The date the user originally purchased the app from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954448-originalpurchasedate
"""

originalApplicationVersion: Optional[str] = Field(default=None)
"""
The app version that the user originally purchased from the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/3954447-originalappversion
"""

deviceVerification: Optional[str] = Field(default=None)
"""
The Base64 device verification value to use to verify whether the app transaction belongs to the device.

https://developer.apple.com/documentation/storekit/apptransaction/3954441-deviceverification
"""

deviceVerificationNonce: Optional[str] = Field(default=None)
"""
The UUID used to compute the device verification value.

https://developer.apple.com/documentation/storekit/apptransaction/3954442-deviceverificationnonce
"""

preorderDate: Optional[int] = Field(default=None)
"""
The date the customer placed an order for the app before it's available in the App Store.

https://developer.apple.com/documentation/storekit/apptransaction/4013175-preorderdate
"""
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/AutoRenewStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class AutoRenewStatus(Enum):
"""
The renewal status for an auto-renewable subscription.

https://developer.apple.com/documentation/appstoreserverapi/autorenewstatus
"""
OFF = 0
ON = 1
5 changes: 5 additions & 0 deletions appstoreserverlibrary/models/v2/Base.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
from pydantic import BaseModel


class Model(BaseModel):
...
26 changes: 26 additions & 0 deletions appstoreserverlibrary/models/v2/CheckTestNotificationResponse.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import List, Optional

from pydantic import Field


class CheckTestNotificationResponse:
"""
A response that contains the contents of the test notification sent by the App Store server and the result from your server.

https://developer.apple.com/documentation/appstoreserverapi/checktestnotificationresponse
"""

signedPayload: Optional[str] = Field(default=None)
"""
A cryptographically signed payload, in JSON Web Signature (JWS) format, containing the response body for a version 2 notification.

https://developer.apple.com/documentation/appstoreservernotifications/signedpayload
"""

sendAttempts: Optional[List[SendAttemptItem]] = Field(default=None)
"""
An array of information the App Store server records for its attempts to send the TEST notification to your server. The array may contain a maximum of six sendAttemptItem objects.

https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem
"""
102 changes: 102 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionRequest.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .AccountTenure import AccountTenure
from .Base import Model

from .ConsumptionStatus import ConsumptionStatus
from .DeliveryStatus import DeliveryStatus
from .LifetimeDollarsPurchased import LifetimeDollarsPurchased
from .LifetimeDollarsRefunded import LifetimeDollarsRefunded
from .Platform import Platform
from .PlayTime import PlayTime
from .UserStatus import UserStatus


class ConsumptionRequest(Model):
"""
The request body containing consumption information.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

customerConsented: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether the customer consented to provide consumption data to the App Store.

https://developer.apple.com/documentation/appstoreserverapi/customerconsented
"""

consumptionStatus: Optional[ConsumptionStatus] = Field(default=None)
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""

platform: Optional[Platform] = Field(default=None)
"""
A value that indicates the platform on which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/platform
"""

sampleContentProvided: Optional[bool] = Field(default=None)
"""
A Boolean value that indicates whether you provided, prior to its purchase, a free sample or trial of the content, or information about its functionality.

https://developer.apple.com/documentation/appstoreserverapi/samplecontentprovided
"""

deliveryStatus: Optional[DeliveryStatus] = Field(default=None)
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""

appAccountToken: Optional[str] = Field(default=None)
"""
The UUID that an app optionally generates to map a customer's in-app purchase with its resulting App Store transaction.

https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken
"""

accountTenure: Optional[AccountTenure] = Field(default=None)
"""
The age of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/accounttenure
"""

playTime: Optional[PlayTime] = Field(default=None)
"""
A value that indicates the amount of time that the customer used the app.

https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
"""

lifetimeDollarsRefunded: Optional[LifetimeDollarsRefunded] = Field(default=None)
"""
A value that indicates the total amount, in USD, of refunds the customer has received, in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarsrefunded
"""

lifetimeDollarsPurchased: Optional[LifetimeDollarsPurchased] = Field(default=None)
"""
A value that indicates the total amount, in USD, of in-app purchases the customer has made in your app, across all platforms.

https://developer.apple.com/documentation/appstoreserverapi/lifetimedollarspurchased
"""

userStatus: Optional[UserStatus] = Field(default=None)
"""
The status of the customer's account.

https://developer.apple.com/documentation/appstoreserverapi/userstatus
"""
14 changes: 14 additions & 0 deletions appstoreserverlibrary/models/v2/ConsumptionStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ConsumptionStatus(Enum):
"""
A value that indicates the extent to which the customer consumed the in-app purchase.

https://developer.apple.com/documentation/appstoreserverapi/consumptionstatus
"""
UNDECLARED = 0
NOT_CONSUMED = 1
PARTIALLY_CONSUMED = 2
FULLY_CONSUMED = 3
67 changes: 67 additions & 0 deletions appstoreserverlibrary/models/v2/Data.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.
from typing import Optional

from attr import define
import attr
from pydantic import Field

from .Base import Model
from .Environment import Environment
from .Status import Status


class Data(Model):
"""
The app metadata and the signed renewal and transaction information.

https://developer.apple.com/documentation/appstoreservernotifications/data
"""

environment: Optional[Environment] = Field(default=None)
"""
The server environment that the notification applies to, either sandbox or production.

https://developer.apple.com/documentation/appstoreservernotifications/environment
"""

appAppleId: Optional[int] = Field(default=None)
"""
The unique identifier of an app in the App Store.

https://developer.apple.com/documentation/appstoreservernotifications/appappleid
"""

bundleId: Optional[str] = Field(default=None)
"""
The bundle identifier of an app.

https://developer.apple.com/documentation/appstoreserverapi/bundleid
"""

bundleVersion: Optional[str] = Field(default=None)
"""
The version of the build that identifies an iteration of the bundle.

https://developer.apple.com/documentation/appstoreservernotifications/bundleversion
"""

signedTransactionInfo: Optional[str] = Field(default=None)
"""
Transaction information signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwstransaction
"""

signedRenewalInfo: Optional[str] = Field(default=None)
"""
Subscription renewal information, signed by the App Store, in JSON Web Signature (JWS) format.

https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfo
"""

status: Optional[Status] = Field(default=None)
"""
The status of an auto-renewable subscription as of the signedDate in the responseBodyV2DecodedPayload.

https://developer.apple.com/documentation/appstoreservernotifications/status
"""
17 changes: 17 additions & 0 deletions appstoreserverlibrary/models/v2/DeliveryStatus.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class DeliveryStatus(Enum):
"""
A value that indicates whether the app successfully delivered an in-app purchase that works properly.

https://developer.apple.com/documentation/appstoreserverapi/deliverystatus
"""
DELIVERED_AND_WORKING_PROPERLY = 0
DID_NOT_DELIVER_DUE_TO_QUALITY_ISSUE = 1
DELIVERED_WRONG_ITEM = 2
DID_NOT_DELIVER_DUE_TO_SERVER_OUTAGE = 3
DID_NOT_DELIVER_DUE_TO_IN_GAME_CURRENCY_CHANGE = 4
DID_NOT_DELIVER_FOR_OTHER_REASON = 5
13 changes: 13 additions & 0 deletions appstoreserverlibrary/models/v2/Environment.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum


class Environment(str, Enum):
"""
The server environment, either sandbox or production.

https://developer.apple.com/documentation/appstoreserverapi/environment
"""
SANDBOX = "Sandbox"
PRODUCTION = "Production"
15 changes: 15 additions & 0 deletions appstoreserverlibrary/models/v2/ExpirationIntent.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2023 Apple Inc. Licensed under MIT License.

from enum import Enum

class ExpirationIntent(Enum):
"""
The reason an auto-renewable subscription expired.

https://developer.apple.com/documentation/appstoreserverapi/expirationintent
"""
CUSTOMER_CANCELLED = 1
BILLING_ERROR = 2
CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = 3
PRODUCT_NOT_AVAILABLE = 4
OTHER = 5
Loading