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@mainIf this is your first time using littlepay, create a configuration file (using defaults):
littlepay configThe 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:
qais for the testing systemprodis for the live system
Add specifics for the participants you manage based on information received from Littlepay support.
littlepay config /path/to/new/config.yamlOr
littlepay --config /path/to/new/config.yamlThe most recent config used is saved for next time.
Use one or both of the -e/--env and -p/--participant flags:
littlepay switch -e <env_name> -p <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 or funding source 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 formatPrint all groups in the active environment:
littlepay groupsFilter 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>For each group, unlink the given funding source from the group. Builds on the filtering syntax.
E.g. to unlink a funding source from all groups:
littlepay groups unlink -s <funding_source_id>Or to unlink a funding source from a specific group:
littlepay groups -f <group_id> unlink -s <funding_source_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 formatlittlepay productsFiltering 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 EXPIREDlittlepay products -f <term> -s ACTIVEFor each group, output the group's linked products. Builds on the filtering sytax.
E.g. to list linked products for all groups:
littlepay groups productsOr to list linked products for a specific group:
littlepay groups -f <group_id> productsFor 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 -p <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
-rcXwhereXis 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