Skip to content

Commit c9810e8

Browse files
Merge pull request #189 from riyazpanjwani/main
Updates to AdvancedCommerce objects and adding support for monthly su…
2 parents ce1c9e0 + 8652c9a commit c9810e8

36 files changed

Lines changed: 824 additions & 72 deletions

appstoreserverlibrary/models/AbstractAdvancedCommerceBaseItem.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
from attr import define
66
import attr
77

8-
from .AdvancedCommerceValidationUtils import AdvancedCommerceValidationUtils
8+
from .HelperValidationUtils import HelperValidationUtils
99
from .LibraryUtility import AttrsRawValueAware
1010

1111
@define
1212
class AbstractAdvancedCommerceBaseItem(AttrsRawValueAware, ABC):
13-
SKU: str = attr.ib(validator=AdvancedCommerceValidationUtils.sku_validator)
13+
SKU: str = attr.ib(validator=HelperValidationUtils.sku_validator)
1414
"""
1515
The product identifier of an in-app purchase product you manage in your own system.
1616

appstoreserverlibrary/models/AbstractAdvancedCommerceItem.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@
44
import attr
55

66
from .AbstractAdvancedCommerceBaseItem import AbstractAdvancedCommerceBaseItem
7-
from .AdvancedCommerceValidationUtils import AdvancedCommerceValidationUtils
7+
from .HelperValidationUtils import HelperValidationUtils
88

99
@define
1010
class AbstractAdvancedCommerceItem(AbstractAdvancedCommerceBaseItem):
11-
description: str = attr.ib(validator=AdvancedCommerceValidationUtils.description_validator)
11+
description: str = attr.ib(validator=HelperValidationUtils.description_validator)
1212
"""
1313
A string you provide that describes a SKU.
1414
1515
https://developer.apple.com/documentation/advancedcommerceapi/description
1616
"""
1717

18-
displayName: str = attr.ib(validator=AdvancedCommerceValidationUtils.display_name_validator)
18+
displayName: str = attr.ib(validator=HelperValidationUtils.display_name_validator)
1919
"""
2020
A string with a product name that you can localize and is suitable for display to customers.
2121

appstoreserverlibrary/models/AdvancedCommerceDescriptors.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from attr import define
44
import attr
55

6-
from .AdvancedCommerceValidationUtils import AdvancedCommerceValidationUtils
6+
from .HelperValidationUtils import HelperValidationUtils
77

88
@define
99
class AdvancedCommerceDescriptors:
@@ -12,14 +12,14 @@ class AdvancedCommerceDescriptors:
1212
1313
https://developer.apple.com/documentation/advancedcommerceapi/descriptors
1414
"""
15-
description: str = attr.ib(validator=AdvancedCommerceValidationUtils.description_validator)
15+
description: str = attr.ib(validator=HelperValidationUtils.description_validator)
1616
"""
1717
A string you provide that describes a SKU.
1818
1919
https://developer.apple.com/documentation/advancedcommerceapi/description
2020
"""
2121

22-
displayName: str = attr.ib(validator=AdvancedCommerceValidationUtils.display_name_validator)
22+
displayName: str = attr.ib(validator=HelperValidationUtils.display_name_validator)
2323
"""
2424
A string with a product name that you can localize and is suitable for display to customers.
2525
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Copyright (c) 2026 Apple Inc. Licensed under MIT License.
2+
3+
from typing import Optional
4+
from uuid import UUID
5+
6+
from attr import define
7+
import attr
8+
9+
@define
10+
class AdvancedCommerceInfo:
11+
"""
12+
A response object you provide to present an offer or switch-plan recommendation message.
13+
14+
https://developer.apple.com/documentation/retentionmessaging/advancedcommerceinfo
15+
"""
16+
17+
messageIdentifier: Optional[UUID] = attr.ib(default=None)
18+
"""
19+
The identifier of the message to display to the customer, along with the offer or switch-plan recommendation provided in advancedCommerceData.
20+
21+
https://developer.apple.com/documentation/retentionmessaging/messageidentifier
22+
"""
23+
24+
advancedCommerceData: Optional[str] = attr.ib(default=None)
25+
"""
26+
A Base64-encoded JSON object which contains a JWS describing an offer or switch-plan recommendation.
27+
28+
https://developer.apple.com/documentation/retentionmessaging/advancedcommercedata
29+
"""

appstoreserverlibrary/models/AdvancedCommerceOffer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from .AdvancedCommerceOfferPeriod import AdvancedCommerceOfferPeriod
88
from .AdvancedCommerceOfferReason import AdvancedCommerceOfferReason
9-
from .AdvancedCommerceValidationUtils import AdvancedCommerceValidationUtils
9+
from .HelperValidationUtils import HelperValidationUtils
1010
from .LibraryUtility import AttrsRawValueAware
1111

1212
@define
@@ -17,7 +17,7 @@ class AdvancedCommerceOffer(AttrsRawValueAware):
1717
https://developer.apple.com/documentation/advancedcommerceapi/offer
1818
"""
1919

20-
periodCount: int = attr.ib(validator=AdvancedCommerceValidationUtils.period_count_validator)
20+
periodCount: int = attr.ib(validator=HelperValidationUtils.period_count_validator)
2121
"""
2222
The number of periods the offer is active.
2323
"""
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Copyright (c) 2026 Apple Inc. Licensed under MIT License.
2+
3+
from typing import List, Optional
4+
5+
from attr import define
6+
import attr
7+
8+
from .AdvancedCommercePriceIncreaseInfoStatus import AdvancedCommercePriceIncreaseInfoStatus
9+
from .LibraryUtility import AttrsRawValueAware
10+
11+
@define
12+
class AdvancedCommercePriceIncreaseInfo(AttrsRawValueAware):
13+
"""
14+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercepriceincreaseinfo
15+
"""
16+
17+
dependentSKUs: Optional[List[str]] = attr.ib(default=None)
18+
"""
19+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercepriceincreaseinfodependentsku
20+
"""
21+
22+
price: Optional[int] = attr.ib(default=None)
23+
"""
24+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercepriceincreaseinfoprice
25+
"""
26+
27+
status: Optional[AdvancedCommercePriceIncreaseInfoStatus] = AdvancedCommercePriceIncreaseInfoStatus.create_main_attr('rawStatus')
28+
"""
29+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercepriceincreaseinfostatus
30+
"""
31+
32+
rawStatus: Optional[str] = AdvancedCommercePriceIncreaseInfoStatus.create_raw_attr('status')
33+
"""
34+
See status
35+
"""
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright (c) 2026 Apple Inc. Licensed under MIT License.
2+
3+
from enum import Enum
4+
5+
from .LibraryUtility import AppStoreServerLibraryEnumMeta
6+
7+
class AdvancedCommercePriceIncreaseInfoStatus(str, Enum, metaclass=AppStoreServerLibraryEnumMeta):
8+
"""
9+
https://developer.apple.com/documentation/appstoreservernotifications/advancedcommercepriceincreaseinfostatus
10+
"""
11+
SCHEDULED = "SCHEDULED"
12+
PENDING = "PENDING"
13+
ACCEPTED = "ACCEPTED"
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Copyright (c) 2026 Apple Inc. Licensed under MIT License.
2+
3+
from typing import Optional
4+
5+
from attr import define
6+
import attr
7+
8+
from .AdvancedCommerceRefundReason import AdvancedCommerceRefundReason
9+
from .AdvancedCommerceRefundType import AdvancedCommerceRefundType
10+
from .LibraryUtility import AttrsRawValueAware
11+
12+
@define
13+
class AdvancedCommerceRefund(AttrsRawValueAware):
14+
"""
15+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerefund
16+
"""
17+
18+
refundAmount: Optional[int] = attr.ib(default=None)
19+
"""
20+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerefundamount
21+
"""
22+
23+
refundDate: Optional[int] = attr.ib(default=None)
24+
"""
25+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerefunddate
26+
"""
27+
28+
refundReason: Optional[AdvancedCommerceRefundReason] = AdvancedCommerceRefundReason.create_main_attr('rawRefundReason')
29+
"""
30+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerefundreason
31+
"""
32+
33+
rawRefundReason: Optional[str] = AdvancedCommerceRefundReason.create_raw_attr('refundReason')
34+
"""
35+
See refundReason
36+
"""
37+
38+
refundType: Optional[AdvancedCommerceRefundType] = AdvancedCommerceRefundType.create_main_attr('rawRefundType')
39+
"""
40+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerefundtype
41+
"""
42+
43+
rawRefundType: Optional[str] = AdvancedCommerceRefundType.create_raw_attr('refundType')
44+
"""
45+
See refundType
46+
"""
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Copyright (c) 2026 Apple Inc. Licensed under MIT License.
2+
3+
from typing import List, Optional
4+
5+
from attr import define
6+
import attr
7+
8+
from .AdvancedCommerceDescriptors import AdvancedCommerceDescriptors
9+
from .AdvancedCommercePeriod import AdvancedCommercePeriod
10+
from .AdvancedCommerceRenewalItem import AdvancedCommerceRenewalItem
11+
from .LibraryUtility import AttrsRawValueAware
12+
13+
@define
14+
class AdvancedCommerceRenewalInfo(AttrsRawValueAware):
15+
"""
16+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerenewalinfo
17+
"""
18+
19+
consistencyToken: Optional[str] = attr.ib(default=None)
20+
"""
21+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommerceconsistencytoken
22+
"""
23+
24+
descriptors: Optional[AdvancedCommerceDescriptors] = attr.ib(default=None)
25+
"""
26+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercedescriptors
27+
"""
28+
29+
items: Optional[List[AdvancedCommerceRenewalItem]] = attr.ib(default=None)
30+
"""
31+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerenewalitem
32+
"""
33+
34+
period: Optional[AdvancedCommercePeriod] = AdvancedCommercePeriod.create_main_attr('rawPeriod')
35+
"""
36+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommerceperiod
37+
"""
38+
39+
rawPeriod: Optional[str] = AdvancedCommercePeriod.create_raw_attr('period')
40+
"""
41+
See period
42+
"""
43+
44+
requestReferenceId: Optional[str] = attr.ib(default=None)
45+
"""
46+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerequestreferenceid
47+
"""
48+
49+
taxCode: Optional[str] = attr.ib(default=None)
50+
"""
51+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercetaxcode
52+
"""
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Copyright (c) 2026 Apple Inc. Licensed under MIT License.
2+
3+
from typing import Optional
4+
5+
from attr import define
6+
import attr
7+
8+
from .AdvancedCommerceOffer import AdvancedCommerceOffer
9+
from .AdvancedCommercePriceIncreaseInfo import AdvancedCommercePriceIncreaseInfo
10+
11+
@define
12+
class AdvancedCommerceRenewalItem:
13+
"""
14+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercerenewalitem
15+
"""
16+
17+
SKU: Optional[str] = attr.ib(default=None)
18+
"""
19+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercesku
20+
"""
21+
22+
description: Optional[str] = attr.ib(default=None)
23+
"""
24+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercedescription
25+
"""
26+
27+
displayName: Optional[str] = attr.ib(default=None)
28+
"""
29+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercedisplayname
30+
"""
31+
32+
offer: Optional[AdvancedCommerceOffer] = attr.ib(default=None)
33+
"""
34+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommerceoffer
35+
"""
36+
37+
price: Optional[int] = attr.ib(default=None)
38+
"""
39+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommerceprice
40+
"""
41+
42+
priceIncreaseInfo: Optional[AdvancedCommercePriceIncreaseInfo] = attr.ib(default=None)
43+
"""
44+
https://developer.apple.com/documentation/appstoreserverapi/advancedcommercepriceincreaseinfo
45+
"""

0 commit comments

Comments
 (0)