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.
-
thefuck
Magnificent app which corrects your previous console command. -
httpie
๐ฅง HTTPie for Terminal โ 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. -
aws-cli
Universal Command Line Interface for Amazon Web Services -
cookiecutter
A cross-platform command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, C projects. -
Gooey
Turn (almost) any Python command line program into a full GUI application with one line -
pgcli
Postgres CLI with autocompletion and syntax highlighting -
mycli
A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting. -
typer
Typer, build great CLIs. Easy to code. Based on Python type hints. -
python-prompt-toolkit
Library for building powerful interactive command line applications in Python -
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 -
docopt
Pythonic command line arguments parser, that will make you smile -
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 -
colorama
Simple cross-platform colored terminal text in Python -
percol
adds flavor of interactive filtering to the traditional pipe concept of UNIX shell -
kube-shell
Kubernetes shell: An integrated shell for working with the Kubernetes -
iredis
Interactive Redis: A Terminal Client for Redis with AutoCompletion and Syntax Highlighting. -
litecli
CLI for SQLite Databases with auto-completion and syntax highlighting -
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. -
shell-functools
Functional programming tools for the shell -
copier
Library and command-line utility for rendering projects templates. -
Torrench
Command-line torrent search program (cross-platform) -
try
Dead simple CLI tool to try Python packages - It's never been easier! :package: -
yaspin
A lightweight terminal spinner for Python with safe pipes and redirects ๐ -
Argh
An argparse wrapper that doesn't make you say "argh" each time you deal with it. -
Pinboard.py
A full-featured Python wrapper (and command-line utility) for the Pinboard API. Built by the makers of Pushpin for Pinboard. -
cliff
Command Line Interface Formulation Framework. Mirror of code maintained at opendev.org. -
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. -
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 -
Manage
Command Line Manager + Interactive Shell for Python Projects -
SubGrab
SubGrab is a utility that allows you to automate subtitles downloading for your media files. -
qbatch
python program for serial farming jobs on compute clusters -
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. -
Updatable
Finds packages that require updates on a python environment -
Focus Phase
A simple yet powerful timer and time tracker from the command line. https://ammar1y.github.io/Focus-Phase/ -
GitHub PR Cleaner
Clear merged pull requests ref (branch) on GitHub
Access the most powerful time series database as a service
* 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