Cal-ITP API implementations and admin tasks for Littlepay.
This library is open-source software that is designed, developed, and maintained by Compiler LLC on behalf of Caltrans, Cal-ITP, and our agency partners.
$ littlepay -h
usage: littlepay [-h] [-v] [-c CONFIG_PATH] {config,groups,products,switch} ...
positional arguments:
{config,groups,products,switch}
config Get or set configuration
groups Interact with groups in the active environment
products Interact with products in the active environment
switch Switch the active environment or participant
options:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-c CONFIG_PATH, --config CONFIG_PATH
Path to a readable and writeable config file to use.
File will be created if it does not exist.
Use pip
to install from GitHub:
pip install git+https://github.com/cal-itp/littlepay.git@main
If this is your first time using littlepay
, create a configuration file (using defaults):
littlepay config
The location and basic info from your current config file are printed in the terminal:
$ littlepay config
Creating config file: /home/calitp/.littlepay/config.yaml
Config: /home/calitp/.littlepay/config.yaml
Envs: prod, qa
Participants: cst
Active: qa, [no participant]
The configuration file is a YAML dictionary tracking envs
and participants
:
active:
env: qa
participant: ""
envs:
prod:
url: ""
qa:
url: ""
participants:
cst:
qa:
audience: ""
client_id: ""
client_secret: ""
prod:
audience: ""
client_id: ""
client_secret: ""
There are two envs
by default, the base API URL should be completed for each:
qa
is for the testing systemprod
is for the live system
Add specifics for the participants
you manage based on information received from Littlepay support.
littlepay config /path/to/new/config.yaml
Or
littlepay --config /path/to/new/config.yaml
The most recent config used is saved for next time.
For envs
:
littlepay switch env <env_name>
And participants
:
littlepay switch participant <participant_id>
$ littlepay groups -h
usage: littlepay groups [-h] [-f GROUP_TERMS] [--csv] {create,funding_sources,link,migrate,products,remove,unlink} ...
positional arguments:
{create,funding_sources,link,migrate,products,remove,unlink}
create Create a new concession group
funding_sources List funding sources for one or more concession groups
link Link one or more concession groups to a product
migrate Migrate a group from the old Customer Group format to the current format
products List products for one or more concession groups
remove Remove an existing concession group
unlink Unlink a product from one or more concession groups
options:
-h, --help show this help message and exit
-f GROUP_TERMS, --filter GROUP_TERMS
Filter for groups with matching group ID or label
--csv Output results in simple CSV format
Print all groups in the active environment:
littlepay groups
Filter for groups with a matching ID or label:
littlepay groups -f <term>
Multiple filters are OR'd together:
littlepay groups -f <term1> -f <term2>
littlepay groups create <label>
With confirmation:
littlepay groups remove <group_id>
Without confirmation:
littlepay groups remove --force <group_id>
$ littlepay products -h
usage: littlepay products [-h] [-f PRODUCT_TERMS] [-s {ACTIVE,INACTIVE,EXPIRED}] [--csv] {link,unlink} ...
positional arguments:
{link,unlink}
link Link one or more products to a concession group
unlink Unlink a concession group from one or more products
options:
-h, --help show this help message and exit
-f PRODUCT_TERMS, --filter PRODUCT_TERMS
Filter for products with matching product ID, code, or description
-s {ACTIVE,INACTIVE,EXPIRED}, --status {ACTIVE,INACTIVE,EXPIRED}
Filter for products with matching status
--csv Output results in simple CSV format
littlepay products
Filtering works the same as for groups, matching against product ID, code, or description:
littlepay products -f <term>
littlepay products -f <term1> -f <term2>
Also supports filtering by status (ACTIVE
, INACTIVE
, EXPIRED
):
littlepay products -s EXPIRED
littlepay products -f <term> -s ACTIVE
For each group, output the group's linked products. Builds on the filtering sytax.
E.g. to list linked products for all groups:
littlepay groups products
Or to list linked products for a specific group:
littlepay groups -f <group_id> products
For each group, link the given product to the group. Builds on the filtering syntax.
E.g. to link a product to all groups:
littlepay groups link <product_id>
Or to link a product to a specific group:
littlepay groups -f <group_id> link <product_id>
Unlinking groups from a product works the same:
littlepay groups -f <group_id> unlink <product_id>
For each product, link the given group to the product. Builds on the filtering syntax.
E.g. to link a group to all products:
littlepay products link <group_id>
Or to link a group to a specific product:
littlepay products -f <product_id> link <group_id>
Unlinking products from a group works the same:
littlepay products -f <product_id> unlink <group_id>
The package version is derived from git metadata via setuptools_scm
.
Pushing a tag with the correct format generates a new GitHub release, which can then be finalized and published.
-
Ensure you are on the latest commit of
main
:git checkout main git pull
-
Create an annotated, Calver-formatted tag based on the release year, month, and sequence counter:
git tag -a YYYY.MM.N
You may also create a release candidate, by appending
-rcX
whereX
is the release candidate sequence counter:git tag -a YYYY.MM.N-rcX
In either case, provide a short comment for the tag.
-
Push the tag to GitHub:
git push origin YYYY.MM.N
-
Observe the Release workflow