Description
This is a Python wrapper around the Apple App Store Api : https://developer.apple.com/documentation/appstoreconnectapi
So far, it handles token generation / expiration, methods for listing resources and downloading reports.
App Store Connect Api alternatives and similar packages
Based on the "Command-line Tools" category.
Alternatively, view App Store Connect Api alternatives based on common mentions on social networks and blogs.
-
httpie
๐ฅง HTTPie CLI โ modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. -
Python Fire
Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object. -
cookiecutter
A cross-platform command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, C projects. -
HTTP Prompt
An interactive command-line HTTP and API testing client built on top of HTTPie featuring autocomplete, syntax highlighting, and more. https://twitter.com/httpie -
PathPicker
PathPicker accepts a wide range of input -- output from git commands, grep results, searches -- pretty much anything. After parsing the input, PathPicker presents you with a nice UI to select which files you're interested in. After that you can open them in your favorite editor or execute arbitrary commands. -
asciimatics
A cross platform package to do curses-like operations, plus higher level APIs and widgets to create text UIs and ASCII art animations -
shiv
shiv is a command line utility for building fully self contained Python zipapps as outlined in PEP 441, but with all their dependencies included. -
Pinboard.py
A full-featured Python wrapper (and command-line utility) for the Pinboard API. Built by the makers of Pushpin for Pinboard. -
python3-nmap
A python 3 library which helps in using nmap port scanner. This is done by converting each nmap command into a callable python3 method or function. System administrators can now automatic nmap scans using python -
R3CON1Z3R
R3con1z3r is a lightweight Web information gathering tool with an intuitive features written in python. it provides a powerful environment in which open source intelligence (OSINT) web-based footprinting can be conducted quickly and thoroughly. -
SubGrab
SubGrab is a utility that allows you to automate subtitles downloading for your media files. -
spline
Spline is a tool that is capable of running locally as well as part of well known pipelines like Jenkins (Jenkinsfile), Travis CI (.travis.yml) or similar ones.
WorkOS - The modern identity platform for B2B SaaS
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of App Store Connect Api or a related project?
README
App Store Connect Api
This is a Python wrapper around the Apple App Store Api : https://developer.apple.com/documentation/appstoreconnectapi
So far, it handles token generation / expiration, methods for listing resources and downloading reports.
Installation
The project is published on PyPI, install with:
pip install appstoreconnect
Usage
Please follow instructions on Apple documentation on how to generate an API key.
With your key ID, key file (you can either pass the path to the file or the content of it as a string) and issuer ID create a new API instance:
from appstoreconnect import Api, UserRole
api = Api(key_id, path_to_key_file, issuer_id)
# use a proxy
api = Api(key_id, path_to_key_file, issuer_id, proxy='http://1.2.3.4:3128')
# set a timeout (in seconds) for requests
api = Api(key_id, path_to_key_file, issuer_id, timeout=42)
Here are a few examples of API usage. For a complete list of available methods please see api.py.
# list all apps
apps = api.list_apps()
for app in apps:
print(app.name, app.sku)
# sort resources
apps = api.list_apps(sort='name')
# filter apps
apps = api.list_apps(filters={'sku': 'DINORUSH', 'name': 'Dino Rush'})
print("%d apps found" % len(apps))
# read app information
app = api.read_app_information('1308363336')
print(app.name, app.sku, app.bundleId)
# get a related resource
for group in app.betaGroups():
print(group.name)
# list bundle ids
for bundle_id in api.list_bundle_ids():
print(bundle_id.identifier)
# list certificates
for certificate in api.list_certificates():
print(certificate.name)
# modify a user
user = api.list_users(filters={'username': '[email protected]'})[0]
api.modify_user_account(user, roles=[UserRole.FINANCE, UserRole.ACCESS_TO_REPORTS])
# download sales report
api.download_sales_and_trends_reports(
filters={'vendorNumber': '123456789', 'frequency': 'WEEKLY', 'reportDate': '2019-06-09'}, save_to='report.csv')
# download finance report
api.download_finance_reports(filters={'vendorNumber': '123456789', 'reportDate': '2019-06'}, save_to='finance.csv')
Define a timeout (in seconds) after which an exception is raised if no response is received.
api = Api(key_id, path_to_key_file, issuer_id, timeout=30)
api.list_apps()
APIError: Read timeout after 30 seconds
Please note this is a work in progress, API is subject to change between versions.
Anonymous data collection
Starting with version 0.8.0 this library anonymously collects its usage to help better improve its development. What we collect is:
- a SHA1 hash of the issuer_id
- the OS and Python version used
- which enpoints had been used
You can review the source code
If you feel uncomfortable with it you can completely opt-out by initliazing the API with:
api = Api(key_id, path_to_key_file, issuer_id, submit_stats=False)
The is also an open issue about this topic where we would love to here your feedback and best practices.
Development
Project development happens on Github
TODO
- [ ] Support App Store Connect API 1.2
- [ ] Support the include parameter
- [X] handle POST, DELETE and PATCH requests
- [X] sales report
- [X] handle related resources
- [X] allow to sort resources
- [ ] proper API documentation
- [ ] add tests
Credits
This project is developed by Ponytech