diff --git a/appstoreconnect/api.py b/appstoreconnect/api.py index 7ef20ec..d225303 100644 --- a/appstoreconnect/api.py +++ b/appstoreconnect/api.py @@ -551,6 +551,22 @@ def list_all_app_screenshots_for_an_app_screenshot_set(self, app_screen_shot_set url = BASE_API + "/v1/appScreenshotSets/" + app_screen_shot_set_id + "/appScreenshots" return self._get_resources(AppScreenshot, None, None, url) + def list_all_app_previews_for_an_app_preview_set(self, app_store_version_localization_id): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/list_all_app_previews_for_an_app_preview_set + :return: an iterator over AppPreviewSet resources + """ + url = BASE_API + "/v1/appPreviewSets/" + app_store_version_localization_id + "/appPreviews" + return self._get_resources(AppPreview, None, None, url) + + def list_all_app_preview_sets_for_an_app_store_version_localization(self, app_store_version_localization_id): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/list_all_app_preview_sets_for_an_app_store_version_localization + :return: an iterator over AppPreviewSet resources + """ + url = BASE_API + "/v1/appStoreVersionLocalizations/" + app_store_version_localization_id + "/appPreviewSets" + return self._get_resources(AppPreviewSet, None, None, url) + def create_an_app_screenshot_set(self, screenshotDisplayType: str, appStoreVersionLocalization: AppStoreVersionLocalization): """ :reference: https://developer.apple.com/documentation/appstoreconnectapi/create_an_app_screenshot_set @@ -558,6 +574,13 @@ def create_an_app_screenshot_set(self, screenshotDisplayType: str, appStoreVersi """ return self._create_resource(AppScreenshotSet, locals()) + def create_an_app_preview_set(self, previewType: str, appStoreVersionLocalization: AppStoreVersionLocalization): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/create_an_app_preview_set + :return: an iterator over AppPreviewSet resources + """ + return self._create_resource(AppPreviewSet, locals()) + def delete_an_app_screenshot_set(self, appScreenshotSet: AppScreenshotSet): """ :reference: https://developer.apple.com/documentation/appstoreconnectapi/delete_an_app_screenshot_set @@ -565,6 +588,13 @@ def delete_an_app_screenshot_set(self, appScreenshotSet: AppScreenshotSet): """ return self._delete_resource(appScreenshotSet) + def delete_an_app_preview_set(self, appPreviewSet: AppPreviewSet): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/delete_an_app_preview_set + :return: an iterator over AppPreviewSet resources + """ + return self._delete_resource(appPreviewSet) + def modify_an_app_screenshot(self, app_screenshot: AppScreenshot, sourceFileChecksum: str, uploaded: bool): """ @@ -574,6 +604,13 @@ def modify_an_app_screenshot(self, app_screenshot: AppScreenshot, sourceFileChec attributes = {'sourceFileChecksum':sourceFileChecksum, 'uploaded':uploaded} return self._modify_resource(app_screenshot, attributes) + def modify_an_app_preview(self, appPreview: AppPreview, sourceFileChecksum: str, uploaded: bool): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/modify_an_app_preview + :return: an iterator over AppPreview resources + """ + return self._modify_resource(appPreview, locals()) + def create_an_asset_reservation(self, appScreenshotSet: AppScreenshotSet, fileSize: int, fileName: str): """ :reference: https://developer.apple.com/documentation/appstoreconnectapi/uploading_assets_to_app_store_connect @@ -581,6 +618,13 @@ def create_an_asset_reservation(self, appScreenshotSet: AppScreenshotSet, fileSi """ return self._create_resource(AppScreenshot, locals()) + def create_a_preview_reservation(self, appPreviewSet: AppPreviewSet, fileSize: int, fileName: str): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/app_metadata/uploading_app_previews + :return: an iterator over AppScreenshot resources + """ + return self._create_resource(AppPreview, locals()) + def upload_the_asset(self, upload_operation, binary): """ :reference: https://developer.apple.com/documentation/appstoreconnectapi/uploading_assets_to_app_store_connect @@ -594,6 +638,19 @@ def upload_the_asset(self, upload_operation, binary): return requests.put(url=url, data = binary, headers = headers) + def upload_the_preview(self, upload_operation, binary): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/app_metadata/uploading_app_previews + :return: an json answer + """ + headers = {} + url = upload_operation['url'] + + for header in upload_operation['requestHeaders']: + headers[header['name']] = header['value'] + + return requests.put(url=url, data = binary, headers = headers) + def read_app_screenshot_information(self, app_screenshot_id): """ :reference: https://developer.apple.com/documentation/appstoreconnectapi/read_app_screenshot_information @@ -601,6 +658,13 @@ def read_app_screenshot_information(self, app_screenshot_id): """ return self._get_resource(AppScreenshot, app_screenshot_id) + def read_app_preview_information(self, app_preview_id): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/read_app_preview_information + :return: an iterator over AppPreview resource + """ + return self._get_resource(AppPreview, app_preview_id) + def delete_an_app_screenshot(self, app_screenshot): """ :reference: https://developer.apple.com/documentation/appstoreconnectapi/delete_an_app_screenshot @@ -608,6 +672,13 @@ def delete_an_app_screenshot(self, app_screenshot): """ return self._delete_resource(app_screenshot) + def delete_an_app_preview(self, app_preview: AppPreview): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/delete_an_app_preview + :return: an iterator over AppPreview resource + """ + return self._delete_resource(app_preview) + def replace_all_app_screenshots_for_an_app_screenshot_set(self, app_screenshot_set, data): """ :reference: https://developer.apple.com/documentation/appstoreconnectapi/replace_all_app_screenshots_for_an_app_screenshot_set @@ -616,6 +687,14 @@ def replace_all_app_screenshots_for_an_app_screenshot_set(self, app_screenshot_s post_data = {"data": data } return self._api_call(BASE_API + "/v1/appScreenshotSets/" + app_screenshot_set.id + "/relationships/appScreenshots", HttpMethod.PATCH, post_data) + def replace_all_app_previews_for_an_app_preview_set(self, app_preview_set, data): + """ + :reference: https://developer.apple.com/documentation/appstoreconnectapi/replace_all_app_previews_for_an_app_preview_set + :return: an iterator over AppPreviewSet resource + """ + post_data = {"data": data } + return self._api_call(BASE_API + "/v1/appPreviewSets/" + app_preview_set.id + "/relationships/appPreviews", HttpMethod.PATCH, post_data) + # Build Resources def list_builds(self, filters=None, sort=None): diff --git a/appstoreconnect/resources.py b/appstoreconnect/resources.py index 50d68dd..5f6ae08 100644 --- a/appstoreconnect/resources.py +++ b/appstoreconnect/resources.py @@ -94,6 +94,15 @@ class AppScreenshot(Resource): } documentation = 'https://developer.apple.com/documentation/appstoreconnectapi/appscreenshot' +class AppPreview(Resource): + endpoint = '/v1/appPreviews' + type = 'appPreviews' + attributes = ['assetDeliveryState', 'videoUrl', 'mimeType', 'fileName', 'fileSize', 'sourceFileChecksum', 'uploadOperations', 'previewFrameTimeCode', 'previewImage', 'uploaded'] + relationships = { + 'appPreviewSet': {'multiple': False} + } + documentation = 'https://developer.apple.com/documentation/appstoreconnectapi/appPreview' + class AppScreenshotSet(Resource): endpoint = '/v1/appScreenshotSets' type = 'appScreenshotSets' @@ -104,6 +113,18 @@ class AppScreenshotSet(Resource): } documentation = 'https://developer.apple.com/documentation/appstoreconnectapi/appscreenshotset' +class AppPreviewSet(Resource): + endpoint = '/v1/appPreviewSets' + type = 'appPreviewSets' + attributes = ['previewType'] + relationships = { + 'appPreviews': {'multiple': True}, + 'appStoreVersionLocalization': {'multiple': False}, + 'appCustomProductPageLocalization': {'multiple': False}, + 'appStoreVersionExperimentTreatmentLocalization': {'multiple': False} + } + documentation = 'https://developer.apple.com/documentation/appstoreconnectapi/apppreviewset' + class AppStoreVersionLocalization(Resource): endpoint = '/v1/appStoreVersionLocalizations' type = 'appStoreVersionLocalizations'