Agency Cards ¶
Agency Cards is a generic term for reduced fare programs offered by Transit Providers, such as the Courtesy Card program from Monterey-Salinas Transit (MST).
Agency cards are different from our other use cases in that eligibility verification happens on the agency side (offline) rather than through the Benefits app, and the Benefits app then checks for a valid Agency Card via an Eligibility API call.
Demonstration ¶
Here’s a video showing what the flow looks like, having agency cardholders confirm eligibility via the Eligibility Server and enroll via Littlepay:
Architecture ¶
In order to support an Agency Cards deployment, the Transit Provider produces a list of eligible users (CSV format) that is loaded into an instance of Eligibility Server running in the Transit Provider’s cloud.
Cal-ITP makes the hashfields
tool to facilitate masking user data before it leaves Transit Provider on-premises systems.
The complete system architecture looks like:
flowchart LR
rider((User's browser))
api[Eligibility Server]
data[Hashed Agency Card data]
cardsystem[Data source]
rider --> Benefits
subgraph CDT Azure
Benefits
end
Benefits --> api
subgraph Transit Provider cloud
api --> data
end
subgraph Transit Provider on-prem
cardsystem --> hashfields
end
hashfields --> data
Notes:
- Eligibility Server source code
- hashfields source code
- More details about the Benefits architecture
- In MST, the
Data Source
is Velocity, the system MST uses to manage and print Courtesy Cards
Process ¶
sequenceDiagram
actor Rider
participant Benefits as Benefits app
participant elig_server as Eligibility Server
participant cc_data as Hashed data
participant Data Source
participant Littlepay
Data Source-->>cc_data: exports nightly
cc_data-->>elig_server: gets loaded on Server start
Rider->>Benefits: visits site
Benefits-->>elig_server: passes entered Agency Card details
elig_server-->>Benefits: confirms eligibility
Benefits-->>Littlepay: enrollment start
Rider->>Littlepay: enters payment card details
Littlepay-->>Benefits: enrollment complete