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
79 changes: 79 additions & 0 deletions appstoreconnect/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -551,20 +551,50 @@ 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
:return: an iterator over AppScreenshotSet resources
"""
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
:return: an iterator over AppScreenshotSet resources
"""
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):
"""
Expand All @@ -574,13 +604,27 @@ 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
:return: an iterator over AppScreenshot resources
"""
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
Expand All @@ -594,20 +638,47 @@ 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
:return: an iterator over AppScreenshot resource
"""
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
:return: an iterator over AppScreenshot resource
"""
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
Expand All @@ -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):
Expand Down
21 changes: 21 additions & 0 deletions appstoreconnect/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -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'
Expand Down