|
32 | 32 | from .models.TransactionHistoryRequest import TransactionHistoryRequest |
33 | 33 | from .models.TransactionInfoResponse import TransactionInfoResponse |
34 | 34 | from .models.UpdateAppAccountTokenRequest import UpdateAppAccountTokenRequest |
| 35 | +from .models.UploadMessageRequestBody import UploadMessageRequestBody |
| 36 | +from .models.GetMessageListResponse import GetMessageListResponse |
35 | 37 |
|
36 | 38 | T = TypeVar('T') |
37 | 39 |
|
@@ -457,10 +459,53 @@ class APIError(IntEnum): |
457 | 459 | GENERAL_INTERNAL_RETRYABLE = 5000001 |
458 | 460 | """ |
459 | 461 | An error response that indicates an unknown error occurred, but you can try again. |
460 | | - |
| 462 | +
|
461 | 463 | https://developer.apple.com/documentation/appstoreserverapi/generalinternalretryableerror |
462 | 464 | """ |
463 | 465 |
|
| 466 | + # Retention Messaging specific errors |
| 467 | + HEADER_TOO_LONG_ERROR = 4000101 |
| 468 | + """ |
| 469 | + An error that indicates the message header exceeds 66 characters. |
| 470 | +
|
| 471 | + https://developer.apple.com/documentation/retentionmessaging/headertoolongerror |
| 472 | + """ |
| 473 | + |
| 474 | + BODY_TOO_LONG_ERROR = 4000102 |
| 475 | + """ |
| 476 | + An error that indicates the message body exceeds 144 characters. |
| 477 | +
|
| 478 | + https://developer.apple.com/documentation/retentionmessaging/bodytoolongerror |
| 479 | + """ |
| 480 | + |
| 481 | + ALT_TEXT_TOO_LONG_ERROR = 4000103 |
| 482 | + """ |
| 483 | + An error that indicates the alt text exceeds 150 characters. |
| 484 | +
|
| 485 | + https://developer.apple.com/documentation/retentionmessaging/alttexttoolongerror |
| 486 | + """ |
| 487 | + |
| 488 | + MAXIMUM_NUMBER_OF_MESSAGES_REACHED_ERROR = 4030001 |
| 489 | + """ |
| 490 | + An error that indicates the maximum number of retention messages (2000) has been reached. |
| 491 | +
|
| 492 | + https://developer.apple.com/documentation/retentionmessaging/maximumnumberofmessagesreachederror |
| 493 | + """ |
| 494 | + |
| 495 | + MESSAGE_NOT_FOUND_ERROR = 4040001 |
| 496 | + """ |
| 497 | + An error that indicates the specified message was not found. |
| 498 | +
|
| 499 | + https://developer.apple.com/documentation/retentionmessaging/messagenotfounderror |
| 500 | + """ |
| 501 | + |
| 502 | + MESSAGE_ALREADY_EXISTS_ERROR = 4090001 |
| 503 | + """ |
| 504 | + An error that indicates the message identifier already exists. |
| 505 | +
|
| 506 | + https://developer.apple.com/documentation/retentionmessaging/messagealreadyexistserror |
| 507 | + """ |
| 508 | + |
464 | 509 |
|
465 | 510 | @define |
466 | 511 | class APIException(Exception): |
@@ -758,6 +803,37 @@ def set_app_account_token(self, original_transaction_id: str, update_app_account |
758 | 803 | """ |
759 | 804 | self._make_request("/inApps/v1/transactions/" + original_transaction_id + "/appAccountToken", "PUT", {}, update_app_account_token_request, None) |
760 | 805 |
|
| 806 | + def upload_retention_message(self, message_identifier: str, retention_message_request: UploadMessageRequestBody) -> None: |
| 807 | + """ |
| 808 | + Upload a message to use for retention messaging. |
| 809 | + https://developer.apple.com/documentation/retentionmessaging/upload-message |
| 810 | +
|
| 811 | + :param message_identifier: A UUID you provide to uniquely identify the message you upload. |
| 812 | + :param retention_message_request: The request body containing the message text and optional image reference. |
| 813 | + :raises APIException: If a response was returned indicating the request could not be processed |
| 814 | + """ |
| 815 | + self._make_request("/inApps/v1/messaging/message/" + message_identifier, "PUT", {}, retention_message_request, None) |
| 816 | + |
| 817 | + def get_retention_message_list(self) -> GetMessageListResponse: |
| 818 | + """ |
| 819 | + Get the message identifier and state of all uploaded messages. |
| 820 | + https://developer.apple.com/documentation/retentionmessaging/get-message-list |
| 821 | +
|
| 822 | + :return: A response that contains status information for all messages. |
| 823 | + :raises APIException: If a response was returned indicating the request could not be processed |
| 824 | + """ |
| 825 | + return self._make_request("/inApps/v1/messaging/message/list", "GET", {}, None, GetMessageListResponse) |
| 826 | + |
| 827 | + def delete_retention_message(self, message_identifier: str) -> None: |
| 828 | + """ |
| 829 | + Delete a previously uploaded message. |
| 830 | + https://developer.apple.com/documentation/retentionmessaging/delete-message |
| 831 | +
|
| 832 | + :param message_identifier: The identifier of the message to delete. |
| 833 | + :raises APIException: If a response was returned indicating the request could not be processed |
| 834 | + """ |
| 835 | + self._make_request("/inApps/v1/messaging/message/" + message_identifier, "DELETE", {}, None, None) |
| 836 | + |
761 | 837 | class AsyncAppStoreServerAPIClient(BaseAppStoreServerAPIClient): |
762 | 838 | def __init__(self, signing_key: bytes, key_id: str, issuer_id: str, bundle_id: str, environment: Environment): |
763 | 839 | super().__init__(signing_key=signing_key, key_id=key_id, issuer_id=issuer_id, bundle_id=bundle_id, environment=environment) |
@@ -970,3 +1046,34 @@ async def set_app_account_token(self, original_transaction_id: str, update_app_a |
970 | 1046 | :raises APIException: If a response was returned indicating the request could not be processed |
971 | 1047 | """ |
972 | 1048 | await self._make_request("/inApps/v1/transactions/" + original_transaction_id + "/appAccountToken", "PUT", {}, update_app_account_token_request, None) |
| 1049 | + |
| 1050 | + async def upload_retention_message(self, message_identifier: str, retention_message_request: UploadMessageRequestBody) -> None: |
| 1051 | + """ |
| 1052 | + Upload a message to use for retention messaging. |
| 1053 | + https://developer.apple.com/documentation/retentionmessaging/upload-message |
| 1054 | +
|
| 1055 | + :param message_identifier: A UUID you provide to uniquely identify the message you upload. |
| 1056 | + :param retention_message_request: The request body containing the message text and optional image reference. |
| 1057 | + :raises APIException: If a response was returned indicating the request could not be processed |
| 1058 | + """ |
| 1059 | + await self._make_request("/inApps/v1/messaging/message/" + message_identifier, "PUT", {}, retention_message_request, None) |
| 1060 | + |
| 1061 | + async def get_retention_message_list(self) -> GetMessageListResponse: |
| 1062 | + """ |
| 1063 | + Get the message identifier and state of all uploaded messages. |
| 1064 | + https://developer.apple.com/documentation/retentionmessaging/get-message-list |
| 1065 | +
|
| 1066 | + :return: A response that contains status information for all messages. |
| 1067 | + :raises APIException: If a response was returned indicating the request could not be processed |
| 1068 | + """ |
| 1069 | + return await self._make_request("/inApps/v1/messaging/message/list", "GET", {}, None, GetMessageListResponse) |
| 1070 | + |
| 1071 | + async def delete_retention_message(self, message_identifier: str) -> None: |
| 1072 | + """ |
| 1073 | + Delete a previously uploaded message. |
| 1074 | + https://developer.apple.com/documentation/retentionmessaging/delete-message |
| 1075 | +
|
| 1076 | + :param message_identifier: The identifier of the message to delete. |
| 1077 | + :raises APIException: If a response was returned indicating the request could not be processed |
| 1078 | + """ |
| 1079 | + await self._make_request("/inApps/v1/messaging/message/" + message_identifier, "DELETE", {}, None, None) |
0 commit comments