Using the command-line interface
io_beep_boop
includes a command line interface to (hopefully) facilitate the execution of certain tasks with the IO API.
The interface can be invoked by entering the following in environments where the package is installed:
(.venv)$ io-beep-boop
All commands can be suffixed with --help
to read their documentation:
(.venv)$ io-beep-boop --help
Usage: io-beep-boop [OPTIONS] COMMAND [ARGS]...
Options:
-t, --token TEXT One of the two IO App API tokens of the service you want
to use.
--base-url TEXT The base URL of the IO App API to use.
--help Show this message and exit.
Commands:
registered-fast
registered-slow
All tasks require a valid API key obtained from the IO Developer website:
API keys can be passed programmatically as the --token
parameter, or manually when prompted by the CLI:
(.venv)$ io-beep-boop --token="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
(.venv)$ io-beep-boop
Token: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Discover who is registered to a given service
Given a text file containing a list of fiscal codes separated by newlines, io_beep_boop
can find which ones are registered to a certain IO service.
Using the fast method
By using the get_subscriptions_on_day()
method on all days in a given date range, io_beep_boop
can determine the users who registered to the service in those days.
(.venv)$ io-beep-boop registered-fast
Warning
Internally, this uses the /subscription-feed/
endpoint, which is not enabled by default for all API keys, and requires manual approval by the IO Team.
If the token is not enabled to access the endpoint, a httpx.HTTPStatusError
will be raised.
$ io-beep-boop registered-fast
...
httpx.HTTPStatusError: Client error '403 Forbidden' for url 'https://api.io.italia.it/api/v1/subscriptions-feed/2022-04-28'
For more information check: https://httpstatuses.com/403
Using the slow method
By using the io_beep_boop.api.client.get_profile()
methods on all profiles with the given fiscal codes, io_beep_boop
can determine which ones of those users are registered to the service and which ones are not.
(.venv)$ io-beep-boop registered-slow
By default, the method performs a single HTTP request per second, in order to avoid rate limits; this can be changed with the --sleep
option:
(.venv)$ io-beep-boop registered-slow --sleep 5.0
Warning
This endpoint performs a HTTP request for every single fiscal code in your given input document, which works, but may not be allowed by IO App API Terms of Service due to the extreme amount of requests possibly generated.
Try to keep the --sleep
delay high!