From acc14511acb786493e432ad37c4da21295a817c2 Mon Sep 17 00:00:00 2001 From: Claudia Anderson Date: Tue, 8 Sep 2026 10:53:44 +0100 Subject: [PATCH 1/3] Modernize Python quickstart with complete PassKit workflows --- .env.example | 14 + .github/dependabot.yml | 10 + .github/workflows/ci.yml | 27 ++ .github/workflows/gitleaks.yml | 21 ++ .gitignore | 8 +- LICENSE | 21 ++ README.md | 339 ++++++++++++++++++------- assets/pass/hero.png | Bin 0 -> 90015 bytes assets/pass/strip.png | Bin 0 -> 118744 bytes assets/shared/icon.png | Bin 0 -> 13478 bytes assets/shared/logo.png | Bin 0 -> 23377 bytes coupons/README.md | 8 + coupons/__init__.py | 4 + coupons/methods.py | 91 +++++++ event_tickets/README.md | 32 +++ event_tickets/__init__.py | 77 ++++++ event_tickets/methods.py | 246 ++++++++++++++++++ flights/README.md | 8 + flights/__init__.py | 4 + flights/methods.py | 89 +++++++ main.py | 76 ++++++ membership/README.md | 9 + membership/__init__.py | 4 + membership/methods.py | 109 ++++++++ pyproject.toml | 49 ++++ quickstarts/__init__.py | 1 + quickstarts/api.py | 72 ++++++ quickstarts/client.py | 86 +++++++ quickstarts/config.py | 71 ++++++ quickstarts/workflow.py | 99 ++++++++ quickstarts/workflows/__init__.py | 1 + quickstarts/workflows/coupons.py | 118 +++++++++ quickstarts/workflows/event_tickets.py | 162 ++++++++++++ quickstarts/workflows/flights.py | 196 ++++++++++++++ quickstarts/workflows/membership.py | 154 +++++++++++ requirements.txt | 3 + tests/test_api.py | 28 ++ tests/test_config.py | 44 ++++ tests/test_event_ticket_methods.py | 29 +++ tests/test_product_methods.py | 14 + tests/test_workflows.py | 138 ++++++++++ 41 files changed, 2368 insertions(+), 94 deletions(-) create mode 100644 .env.example create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/gitleaks.yml create mode 100644 LICENSE create mode 100755 assets/pass/hero.png create mode 100755 assets/pass/strip.png create mode 100755 assets/shared/icon.png create mode 100755 assets/shared/logo.png create mode 100644 coupons/README.md create mode 100644 coupons/__init__.py create mode 100644 coupons/methods.py create mode 100644 event_tickets/README.md create mode 100644 event_tickets/__init__.py create mode 100644 event_tickets/methods.py create mode 100644 flights/README.md create mode 100644 flights/__init__.py create mode 100644 flights/methods.py create mode 100644 main.py create mode 100644 membership/README.md create mode 100644 membership/__init__.py create mode 100644 membership/methods.py create mode 100644 pyproject.toml create mode 100644 quickstarts/__init__.py create mode 100644 quickstarts/api.py create mode 100644 quickstarts/client.py create mode 100644 quickstarts/config.py create mode 100644 quickstarts/workflow.py create mode 100644 quickstarts/workflows/__init__.py create mode 100644 quickstarts/workflows/coupons.py create mode 100644 quickstarts/workflows/event_tickets.py create mode 100644 quickstarts/workflows/flights.py create mode 100644 quickstarts/workflows/membership.py create mode 100644 requirements.txt create mode 100644 tests/test_api.py create mode 100644 tests/test_config.py create mode 100644 tests/test_event_ticket_methods.py create mode 100644 tests/test_product_methods.py create mode 100644 tests/test_workflows.py diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e0a17c9 --- /dev/null +++ b/.env.example @@ -0,0 +1,14 @@ +PASSKIT_PASSPHRASE=your_passphrase +PASSKIT_ADDRESS=grpc.pub1.passkit.io +PASSKIT_PORT=443 +PASSKIT_ROOT_CERT=certs/ca-chain.pem +PASSKIT_PRIVATE_KEY=certs/key.pem +PASSKIT_CERTIFICATE=certs/certificate.pem +PASSKIT_CONNECTION_MODE=pool +PASSKIT_POOL_SIZE=5 +PASSKIT_KEEP_ASSETS=false +PASSKIT_RECIPIENT_EMAIL= +PASSKIT_APPLE_CERTIFICATE= +PASSKIT_FLIGHT_CARRIER=YY +PASSKIT_FLIGHT_ORIGIN=YY4 +PASSKIT_FLIGHT_DESTINATION=ADP diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..a478f1b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: pip + directory: "/" + schedule: + interval: monthly + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: monthly diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ecc0c04 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,27 @@ +name: CI + +on: + push: + pull_request: + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v7 + with: + python-version: ${{ matrix.python-version }} + cache: pip + - run: python -m pip install --upgrade pip + - run: python -m pip install -e ".[dev]" + - run: python -m unittest discover -s tests -v + - run: python -m ruff check . + - run: python -m ruff format --check . diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml new file mode 100644 index 0000000..4af0cb3 --- /dev/null +++ b/.github/workflows/gitleaks.yml @@ -0,0 +1,21 @@ +name: Gitleaks + +on: + push: + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + scan: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 0 + - uses: gitleaks/gitleaks-action@v3 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }} diff --git a/.gitignore b/.gitignore index 2dd7372..6c26f2e 100644 --- a/.gitignore +++ b/.gitignore @@ -103,6 +103,8 @@ celerybeat.pid # Environments .env +.env.* +!.env.example .venv env/ venv/ @@ -128,4 +130,8 @@ dmypy.json # Pyre type checker .pyre/ -./certs +certs/ +.DS_Store +.idea/ +.vscode/ +.ruff_cache/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e59105d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) PassKit + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index d3ab3ab..d4eadf2 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,247 @@ -PassKit Python Quickstart -======================= - -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Version](https://badge.fury.io/py/passkit-python-grpc-sdk.svg)](https://pypi.org/project/passkit-python-grpc-sdk/) - -### Overview - -This quickstart aims to help get Python developers up and running with the PassKit SDK as quickly as possible. - -### Prerequisites - -You will need the following: - -- A PassKit account (signup for free at https://app.passkit.com) -- Your PassKit SDK Credentials (available from the https://app.passkit.com/app/account/developer-tools) -- Python 3.7 or above from https://www.oracle.com/java/technologies/downloads/ (https://docs.oracle.com/en/java/javase/18/install/overview-jdk-installation.html - guide on how to download) -- Gradle Build Tool from https://gradle.org/install/ with guide on how to install -- Apple wallet certificate id (for flights only, https://app.passkit.com/app/account/certificates) - ![ScreenShot](images/certificate.png) - - The following Python packages: - - `passkit-python-grpc-sdk` - - `protobuf>=5.26` - - `grpcio>=1.60` - - `grpcio-tools>=1.60` - - `protoc-gen-openapiv2` - - `googleapis-common-protos` - -You can install all required Python packages with: - -`pip install passkit-python-grpc-sdk "protobuf>=5.26" "grpcio>=1.60" "grpcio-tools>=1.60" protoc-gen-openapiv2 googleapis-common-protos` - - -### Configuration - -1. Download or clone this quickstart repository, create a folder `certs` in the resources folder of the repository and add the following three PassKit credential files: - - certificate.pem - - ca-chain.pem - - key.pem - - You can disregard the key-java.pem credentials file as it is not compatible with Python. -2. Use `pip install passkit-python-grpc-sdk` to download the latest sdk from python or use `pip install passkit-python-grpc-sdk --upgrade` to upgrade to the latest. - -### Membership Cards -In the membership folder the methods there are: -- create-program.py - takes a new program name and creates a new program -- create-tier.py - takes the programId of the program just created in the above program, creates a new template (based of default template), creates a tier, and links this tier to the program -- enrol-member.py - takes programId and tierId created by the above methods, and memberDetails, creates a new member record, and sends a welcome email to deliver membership card url -- update-member.py - takes memberId and memberDetails, and updates existing member record -- check-in-member.py - takes memberId and location details and checks in the selected member -- check-out-member.py - takes memberId and location details and checks out the selected member -- earn-points.py - takes a programId of an existing program and memberId of existing member to add points to chosen member -- burn-points.py - takes a programId of an existing program and memberId of existing member to use points from a chosen member -- delete-member.py - takes programId, tierId, memberId and memberDetails, deletes an existing member record - -Run individually using `python3 -m membership.chosenMethod` - -### Coupons -In the coupons folder the methods are: -- create-campaign.py - takes a new campaign name and creates a new campaign -- create-offer.py - takes a campaignId of the campaign you just created and creates a new template (based of default template), creates an offer, and links this offer to the campaign -- create-coupon.py - takes campaignId and offerId created by the above methods, and couponDetails, creates a new coupon record, and sends a welcome email to deliver coupon card url -- list-coupons.py - takes campaignId and returns list of coupon records under that campaign -- update-coupon.py - takes a campaignId of an existing campaign and couponId of existing coupon to update that coupon -- redeem-coupon.py - takes a campaignId of an existing campaign and couponId of existing coupon to redeem that coupon -- void-coupon.py - takes the couponId, offerId and campaignId to void an existing coupon - -Run individually using `python3 -m coupons.chosenMethod` - -### Boarding Passes -#### Issue A Boarding Pass. -In the flights folder the methods are: -- create-template.py - creates the pass template for flights and boarding passes -- create-carrier.py - takes a new carrier code and creates a new carrier -- create-airport.py - takes a new airport code and creates a new airport. -- create-flight.py - takes templateId , from previous method, to use as base template and uses a carrier code, created from previous method, and creates a new flight -- create-flight-designator.py - creates flight designator using flight code -- create-boarding-pass.py - takes templateId, from previous method, and customer details creates a new boarding pass, and sends a welcome email to deliver boarding pass url -- delete-flight.py - takes an existing flight number as well as other details and deletes the flight associated with it -- delete-flight-designator.py - takes an existing flight designation and deletes the flight designator associated with it -- delete-airports.py - takes an existing airport code and deletes the airport associated with it -- delete-carrier.py - takes an existing carrier code and deletes the carrier associated with it - -Run individually using `python3 -m flights.chosenMethod` - -To run all methods use `python3 quickstart-all.py` - - -## Documentation -* [PassKit Membership Official Documentation](https://docs.passkit.io/protocols/member) -* [PassKit Coupons Official Documentation](https://docs.passkit.io/protocols/coupon) -* [PassKit Boarding Passes Official Documentation](https://docs.passkit.io/protocols/boarding) -* [PassKit Events Official Documentation](https://docs.passkit.io/protocols/event-tickets/) +# PassKit Python Quickstart +[![CI](https://github.com/PassKit/passkit-python-quickstart/actions/workflows/ci.yml/badge.svg)](https://github.com/PassKit/passkit-python-quickstart/actions/workflows/ci.yml) +[![PyPI](https://img.shields.io/pypi/v/passkit-python-grpc-sdk.svg)](https://pypi.org/project/passkit-python-grpc-sdk/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) + +Create a working PassKit membership card, coupon, event ticket, or flight +boarding pass with the official Python SDK. Each guided example runs with one +command, prints the resulting wallet pass URL, and removes the test resources +it created. + +## Quick start + +You need Python 3.9 or newer, a free +[PassKit account](https://app.passkit.com/signup), and PassKit SDK credentials. + +### 1. Download and install + +```bash +git clone https://github.com/PassKit/passkit-python-quickstart.git +cd passkit-python-quickstart +python3 -m venv .venv +source .venv/bin/activate +python -m pip install -e . +``` + +On Windows PowerShell, activate the environment with: + +```powershell +.venv\Scripts\Activate.ps1 +``` + +### 2. Get your PassKit credentials + +1. Sign in to [PassKit](https://app.passkit.com). +2. Open **Developer Tools** from the account menu. +3. Under **Account Credentials**, select **SDK Credentials**. +4. Choose a strong password when prompted. +5. Download the three files sent to your registered email address: + + - `certificate.pem` + - `key.pem` + - `ca-chain.pem` + +The password encrypts your private key; it is not your PassKit account +password. Generating another credential set invalidates the existing one. + +### 3. Configure the quickstart + +Create `certs/`, copy in all three credential files, and create `.env`: + +```bash +mkdir -p certs +cp /path/to/downloads/certificate.pem certs/ +cp /path/to/downloads/key.pem certs/ +cp /path/to/downloads/ca-chain.pem certs/ +cp .env.example .env +``` + +Open `.env` and set `PASSKIT_PASSPHRASE` to the SDK credential password. +Check **Developer Tools → API Region** and use: + +- `grpc.pub1.passkit.io` for Europe +- `grpc.pub2.passkit.io` for the USA + +The files under `certs/` and your `.env` are ignored by Git. Never commit or +share them. + +### 4. Run an example + +```bash +python main.py membership +python main.py coupons +python main.py event-tickets +python main.py flights +``` + +`loyalty` is an alias for `membership`, and `tickets` is an alias for +`event-tickets`. + +A successful run prints output similar to: + +```text +Created resources: + bronzePassId: https://pub1.pskt.io/4MEIqDFudziP4ZFKx5osw3 +Cleaning up generated resources... +``` + +Open the URL on a phone to add the pass to Apple Wallet or Google Wallet. On a +desktop, the PassKit page displays a QR code you can scan. + +## What each workflow demonstrates + +| Workflow | Included operations | +| --- | --- | +| Membership | Images, two templates, program and tiers, member enrolment, update, ID and external-ID lookup, check-in/out, earn and burn points, list, count, event history, and cleanup | +| Coupons | Images, before/after templates, campaign and offers, issue, update, get, list, count, redeem, void, and cleanup | +| Event tickets | Images, template, production, venue, future-dated event, ticket type, issue, update, lookup by ID/ticket/order number, list, count, validate, redeem, and cleanup | +| Flights | Images, template, carrier and airport create-or-reuse, future-dated flight and designator, lookup, boarding-pass issue and lookup, and ordered cleanup | + +The focused implementations are under `quickstarts/workflows/`. Shared image, +template, cleanup, configuration, and connection logic is kept under +`quickstarts/`. + +Each product also provides focused reusable calls through its own `methods.py`: +[`membership`](membership/README.md), [`coupons`](coupons/README.md), +[`event_tickets`](event_tickets/README.md), and [`flights`](flights/README.md). +The original individual scripts remain as compatible entry points. The guided +workflows are self-contained and use the maintained implementations under +`quickstarts/workflows/`. + +## Flights + +Flights require an Apple pass certificate uploaded to PassKit. Copy its pass +type identifier into `.env`: + +```dotenv +PASSKIT_APPLE_CERTIFICATE=pass.com.example.airline +``` + +The default `YY` carrier and `YY4`/`ADP` airports are reused if they already +exist in your account. Reused infrastructure is never deleted. The flight +number and departure date are generated for each run. + +## Keep generated resources + +Cleanup runs even if an example fails partway through. To keep the generated +records for inspection, set: + +```dotenv +PASSKIT_KEEP_ASSETS=true +``` + +You must then delete them manually. Return the value to `false` for normal use. + +## Configuration reference + +| Variable | Default | Purpose | +| --- | --- | --- | +| `PASSKIT_PASSPHRASE` | Empty | Password required when `key.pem` is encrypted | +| `PASSKIT_ADDRESS` | `grpc.pub1.passkit.io` | PassKit API region hostname | +| `PASSKIT_PORT` | `443` | gRPC port | +| `PASSKIT_ROOT_CERT` | `certs/ca-chain.pem` | PassKit CA chain | +| `PASSKIT_PRIVATE_KEY` | `certs/key.pem` | SDK private key | +| `PASSKIT_CERTIFICATE` | `certs/certificate.pem` | SDK client certificate | +| `PASSKIT_CONNECTION_MODE` | `pool` | `pool` or `single` | +| `PASSKIT_POOL_SIZE` | `5` | Number of reusable connections | +| `PASSKIT_KEEP_ASSETS` | `false` | Keep resources created by a run | +| `PASSKIT_RECIPIENT_EMAIL` | Empty | Optional real recipient email | +| `PASSKIT_APPLE_CERTIFICATE` | Empty | Apple pass type identifier for flights | +| `PASSKIT_FLIGHT_CARRIER` | `YY` | Two-character carrier code | +| `PASSKIT_FLIGHT_ORIGIN` | `YY4` | Origin airport code | +| `PASSKIT_FLIGHT_DESTINATION` | `ADP` | Destination airport code | + +Values already set in your terminal take precedence over `.env`. + +## Use the complete SDK API + +`quickstarts/api.py` exposes all generated SDK services and methods. Print the +current operation list without credentials or a network connection: + +```bash +python main.py operations +``` + +Create the API with the same reusable connection pool used by the examples: + +```python +from passkit.io.common.common_objects_pb2 import Id + +from quickstarts.api import PassKitApi +from quickstarts.client import ConnectionPool +from quickstarts.config import Config + +config = Config.load() +config.validate() +pool = ConnectionPool(config) + +try: + api = PassKitApi(pool) + program = api.members.getProgram(Id(id="YOUR_PROGRAM_ID")) + print(program) +finally: + pool.close() +``` + +Server-streaming methods return normal Python iterators. Use +`api.members.collect("listPrograms", request)` when a small result should be +collected into a list. + +Sensitive account, credential, bulk-delete, and bulk-update operations are +blocked through the facade by default. They require an explicit opt-in: + +```python +api = PassKitApi(pool, allow_destructive=True) +``` + +## Tests and project checks + +These checks do not connect to PassKit or require credentials: + +```bash +python -m unittest discover -s tests -v +python -m ruff check . +python -m ruff format --check . +``` + +The live workflows create and delete PassKit resources and require `.env` and +the three credential files. + +## Troubleshooting + +### A credential file cannot be found + +Confirm all three `.pem` files are under `certs/` and run the command from the +repository root. + +### The private key cannot be decrypted + +`PASSKIT_PASSPHRASE` must be the password chosen when generating the SDK +credentials. It is not your PassKit login password. Replace all three files +together if you generate a new credential set. + +### Authentication or connection fails + +Confirm your PassKit API region. Also check whether a firewall or VPN blocks +outbound HTTPS/gRPC traffic. + +### Flights stop before connecting + +Upload an Apple pass certificate to PassKit and set +`PASSKIT_APPLE_CERTIFICATE` to its pass type identifier. + +### Resources remain after a failed run + +Remove them in the PassKit portal and ensure `PASSKIT_KEEP_ASSETS=false`. + +## Documentation and support + +- [PassKit API documentation](https://docs.passkit.io/) +- [PassKit Help Centre](https://help.passkit.com/) +- [Open an issue](https://github.com/PassKit/passkit-python-quickstart/issues) +- Email [support@passkit.com](mailto:support@passkit.com) + +## Licence + +Distributed under the [MIT Licence](LICENSE). diff --git a/assets/pass/hero.png b/assets/pass/hero.png new file mode 100755 index 0000000000000000000000000000000000000000..6e09da08da9f53f2563dda49ac7e83c5e3a02412 GIT binary patch literal 90015 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

aW$_G1<(J@C;dkc;KT|1;w@aep3PR# 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 T;(UAK00000NkvXXu0mjfC@Djk literal 0 HcmV?d00001 diff --git a/assets/pass/strip.png b/assets/pass/strip.png new file mode 100755 index 0000000000000000000000000000000000000000..fafa8bc212ece34e6191840bbc4aaadad9e4021e GIT binary patch literal 118744 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 literal 0 HcmV?d00001 diff --git a/assets/shared/logo.png b/assets/shared/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..eb57a5f7e61a7cf96194a00fcd04f8c4ed23f08f GIT binary patch literal 23377 zcmd3Ng;!Kj*Y`+Bhosa1N`pvuBV9vxDcy~Lbc=L1NDnbcHxf!om$Wntog@8SpXdA5 z`~C?ZYt7=WbI;j%&$)Z=-@efhRXH3?a!e2igrgw;P6Gr&O8NIge-4bajhBl6|HwRK z^gJ}3tvtNV-7G18SiGE+-y@a zl9t4z(OO3E6*md?PvjPA_9mIjFR{4e##K8-5ptD{N!A&OA@fCGG`Y|)AeA{z(BklE z42FMu8%M7nq8W+LI+6Ia++s1%XEsuvMT_y9bn*O8S1po`Y5B{Xn7pecKgUWfXcF`~ zAg?hG;onWo#FBf=e)Le&h`2Kxzk@*m$^ZZUvuurK03}r3bjB%wOfyNhWrcmTPE?p{6Fad~< znnW(OZ}MbT(zWJvN8f-@M2;8&%>$vQfIef#VMccD>@KMUYy`!&o{Y|usLU` zQkEipx(N=5!LE(lP))z3}$t3N`T7uQlu>- zLYk{=!FW9t;*k;tGxir8&wv&9G?L#@BnnV!w?PYr#5B}&61}u$c?QHBcRU!taDrTv zR?xi(AzdbNG+)L0R;{P|h@;OSB>JERq+)0sR7@lM9bIK*dYPUiE zv*mF5A76=P+Vl0#g$~6k(whV5>A(nxmVm|x39zc9bn%V^JN_$mmll!X9Hk%$46_dW z3dJo1%g#HbuY&2_6?zlM0L^6%`7!N2MY_uR;Hy}j80rtKuYkFK6r&D#pPfhFmdV9{ zvgcrd0qUG<1T+vNRJ5VV4f2SF;GtM(TA2+dFn0_5%5OFml~2?Fg<~F8!?v~mAK3<( z<;Qqw-Gb*p2JQ{-Yv=)W3Gfn&QWwQ5%Vm*_;q&6-I#u{+=qVCXk{au-h2-pY<|Tai zk-fzvXB?D(y1})QZcP}8SPjqdSJlHug!I^_i2x0w@acA;>$TUE)z9dxD;|B)eA0l? zJr;R(tzYpdZj;U-+v-_JfT$=6Ae4W4hhZmH{eF&#okq;s_Y8^NjEFA3O79y^id_TO zJ$lbSr8dKc!f)rzL+FAS^uT6Jl)#W7MiRCovYuM^`?!CSqbGsT|FNmXO>&=gvGGfr z1J%kbzI*`P>4ivOq)^cj~gE+hzFw*?90DsVo(+rVF zfEK^&NCVU}BZk61zX<|0P_r%Ap#yhAX#{mS)c}8{vFzvq6zRz5w4=3T{#g&df6`9x zo5f4Yg&RzjAnd;49fdqbWh8XjHHF>m6DAr~Ev7`xgq+IXz;g26-2?zNy@Z+5rX7Xz z89W+ZIq3SmVnmN*0g4cIGTvObNrhe~4vjHpa{Nr;IgturkO`-RLtaU@xH(WlbP0pr zwJm0Ggp8m(r?Q>R9i=&egwPGr5?0g=M^o$SuvxS1*3rO zwx-A++5%Ge?viGqvRn~~X-Pw-k)TJt@ZA=Nf;IsNnEgzP=>?~}9ah0SU`&_TlH1+8 zL&IpBa>y%#jG3;aU5sQYGSghlKej7mb zYLSuXF)@?fRWg=U?Lk2mN-E_>UzsNuB046$GVUX9=a<41KrV$RbIsW&1_ivpTAc)o zC<@SGqZTI$E)qQ#W^&cW^B|{7R-ND?RBWFbzG4pEYhUG2fqoLjL9p>%gjND_;x zv*Pg_Fu>g�-8a85UyI!fcN_MXrcek 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 EventTicketsStub: + """Accept either a channel or a pooled EventTicketsStub.""" + if isinstance(channel_or_stub, EventTicketsStub): + return channel_or_stub + return EventTicketsStub(channel_or_stub) + + +def create_production(channel: grpc.Channel, name: str = "Python Quickstart Production") -> str: + response = _stub(channel).createProduction( + Production( + name=name, + finePrint="Quickstart demonstration only.", + status=[ + ProjectStatus.PROJECT_DRAFT, + ProjectStatus.PROJECT_ACTIVE_FOR_OBJECT_CREATION, + ], + ) + ) + return response.id + + +def create_venue(channel: grpc.Channel, name: str = "Python Quickstart Venue") -> str: + response = _stub(channel).createVenue( + Venue(name=name, address="123 Quickstart Street, London", timezone="Europe/London") + ) + return response.id + + +def create_event(channel: grpc.Channel, production_id: str, venue_id: str) -> str: + start = datetime.now(timezone.utc) + timedelta(days=7) + response = _stub(channel).createEvent( + Event( + production=Production(id=production_id), + venue=Venue(id=venue_id), + doorsOpen=timestamp(start - timedelta(hours=1)), + scheduledStartDate=timestamp(start), + relevantDate=timestamp(start), + endDate=timestamp(start + timedelta(hours=3)), + ) + ) + return response.id + + +def create_ticket_type(channel: grpc.Channel, production_id: str, template_id: str) -> str: + response = _stub(channel).createTicketType( + TicketType( + name="Python Quickstart General Admission", + productionId=production_id, + beforeRedeemPassTemplateId=template_id, + ) + ) + return response.id + + +def issue_ticket( + channel: grpc.Channel, + event_id: str, + ticket_type_id: str, + *, + ticket_number: str, + order_number: str, + email: str, +) -> str: + response = _stub(channel).issueTicket( + IssueTicketRequest( + eventId=event_id, + ticketTypeId=ticket_type_id, + ticketNumber=ticket_number, + orderNumber=order_number, + person=Person(displayName="Python Ticket Holder", emailAddress=email), + ) + ) + return response.id + + +def update_ticket(channel: grpc.Channel, ticket_id: str, display_name: str) -> object: + return _stub(channel).updateTicket( + Ticket(id=ticket_id, person=Person(displayName=display_name)) + ) + + +def get_production(channel: grpc.Channel, production_id: str) -> object: + return _stub(channel).getProduction(Id(id=production_id)) + + +def update_production(channel: grpc.Channel, production: Production) -> object: + return _stub(channel).updateProduction(production) + + +def list_productions(channel: grpc.Channel) -> list[object]: + return list(_stub(channel).listProductions(Filters(limit=-1))) + + +def copy_production(channel: grpc.Channel, production_id: str, name: str) -> object: + return _stub(channel).copyProduction(ProductionCopyRequest(id=production_id, name=name)) + + +def get_venue(channel: grpc.Channel, venue_id: str) -> object: + return _stub(channel).getVenueById(Id(id=venue_id)) + + +def update_venue(channel: grpc.Channel, venue: Venue) -> object: + return _stub(channel).updateVenue(venue) + + +def list_venues(channel: grpc.Channel) -> list[object]: + return list(_stub(channel).listVenues(Filters(limit=-1))) + + +def get_event(channel: grpc.Channel, event_id: str) -> object: + return _stub(channel).getEventById(Id(id=event_id)) + + +def update_event(channel: grpc.Channel, event: Event) -> object: + return _stub(channel).updateEvent(event) + + +def list_events(channel: grpc.Channel, production_id: str) -> list[object]: + return list(_stub(channel).listEvents(EventListRequest(productionId=production_id))) + + +def get_ticket_type(channel: grpc.Channel, ticket_type_id: str) -> object: + return _stub(channel).getTicketTypeById(Id(id=ticket_type_id)) + + +def update_ticket_type(channel: grpc.Channel, ticket_type: TicketType) -> object: + return _stub(channel).updateTicketType(ticket_type) + + +def list_ticket_types(channel: grpc.Channel, production_id: str) -> list[object]: + return list(_stub(channel).listTicketTypes(TicketTypeListRequest(productionId=production_id))) + + +def issue_ticket_by_id(channel: grpc.Channel, ticket: Ticket) -> object: + return _stub(channel).issueTicketById(ticket) + + +def get_event_ticket_pass(channel: grpc.Channel, ticket_id: str) -> object: + return _stub(channel).getEventTicketPass(EventTicketPassRequest(ticketId=Id(id=ticket_id))) + + +def redeem_tickets_by_order_number( + channel: grpc.Channel, production_id: str, order_number: str +) -> object: + return _stub(channel).redeemTicketsByOrderNumber( + RedeemByOrderNumber(productionId=production_id, orderNumber=order_number) + ) + + +def delete_tickets_by_order_number( + channel: grpc.Channel, production_id: str, order_number: str +) -> object: + return _stub(channel).deleteTicketsByOrderNumber( + OrderNumberRequest(productionId=production_id, orderNumber=order_number) + ) + + +def get_ticket_by_id(channel: grpc.Channel, ticket_id: str) -> object: + return _stub(channel).getTicketById(Id(id=ticket_id)) + + +def get_ticket_by_number(channel: grpc.Channel, production_id: str, ticket_number: str) -> object: + return _stub(channel).getTicketByTicketNumber( + TicketNumberRequest(productionId=production_id, ticketNumber=ticket_number) + ) + + +def get_tickets_by_order_number( + channel: grpc.Channel, production_id: str, order_number: str +) -> object: + return _stub(channel).getTicketsByOrderNumber( + OrderNumberRequest(productionId=production_id, orderNumber=order_number) + ) + + +def list_tickets(channel: grpc.Channel, production_id: str, event_id: str) -> list[object]: + request = TicketListRequest( + productionId=production_id, eventId=event_id, filters=Filters(limit=-1) + ) + return list(_stub(channel).listTickets(request)) + + +def count_tickets(channel: grpc.Channel, production_id: str, event_id: str) -> object: + return _stub(channel).countTickets( + TicketListRequest(productionId=production_id, eventId=event_id) + ) + + +def validate_ticket(channel: grpc.Channel, ticket_id: str, maximum: int = 3) -> object: + return _stub(channel).validateTicket( + ValidateTicketRequest(maxNumberOfValidations=maximum, ticket=TicketId(ticketId=ticket_id)) + ) + + +def redeem_ticket(channel: grpc.Channel, ticket_id: str) -> object: + return _stub(channel).redeemTicket(RedeemTicketRequest(ticket=TicketId(ticketId=ticket_id))) + + +def delete_ticket(channel: grpc.Channel, ticket_id: str) -> object: + return _stub(channel).deleteTicket(TicketId(ticketId=ticket_id)) + + +def delete_ticket_type(channel: grpc.Channel, ticket_type_id: str) -> object: + return _stub(channel).deleteTicketType(TicketType(id=ticket_type_id)) + + +def delete_event(channel: grpc.Channel, event_id: str) -> object: + return _stub(channel).deleteEvent(Event(id=event_id)) + + +def delete_venue(channel: grpc.Channel, venue_id: str) -> object: + return _stub(channel).deleteVenue(Venue(id=venue_id)) + + +def delete_production(channel: grpc.Channel, production_id: str) -> object: + return _stub(channel).deleteProduction(Production(id=production_id)) diff --git a/flights/README.md b/flights/README.md new file mode 100644 index 0000000..c78b0b7 --- /dev/null +++ b/flights/README.md @@ -0,0 +1,8 @@ +# Flight methods + +[`methods.py`](methods.py) provides one import point for creating, retrieving, +updating and deleting carriers, airports, flights and flight designators, plus +boarding-pass creation, record lookup, download and update. The individual +scripts remain available for backwards compatibility. + +Run the complete lifecycle with `python main.py flights`. diff --git a/flights/__init__.py b/flights/__init__.py new file mode 100644 index 0000000..15f33e8 --- /dev/null +++ b/flights/__init__.py @@ -0,0 +1,4 @@ +"""Focused PassKit flight examples.""" + +from flights.methods import * # noqa: F403 +from flights.methods import __all__ diff --git a/flights/methods.py b/flights/methods.py new file mode 100644 index 0000000..62edbe7 --- /dev/null +++ b/flights/methods.py @@ -0,0 +1,89 @@ +"""Reusable flight examples collected behind one consistent interface.""" + +from passkit.io.common.common_objects_pb2 import Id +from passkit.io.flights.a_rpc_pb2_grpc import FlightsStub +from passkit.io.flights.airport_pb2 import AirportCode +from passkit.io.flights.boarding_pass_pb2 import BoardingPassRequest +from passkit.io.flights.carrier_pb2 import CarrierCode + +from flights.createAirport import run as create_airport +from flights.createBoardingPass import run as create_boarding_pass +from flights.createCarrier import run as create_carrier +from flights.createFlight import run as create_flight +from flights.createFlightDesignator import run as create_flight_designator +from flights.deleteAirport import run as delete_airport +from flights.deleteCarrier import run as delete_carrier +from flights.deleteFlight import run as delete_flight +from flights.deleteFlightDesignator import run as delete_flight_designator + + +def _stub(channel): + return channel if isinstance(channel, FlightsStub) else FlightsStub(channel) + + +def get_carrier(channel, carrier_code: str): + return _stub(channel).getCarrier(CarrierCode(carrierCode=carrier_code)) + + +def update_carrier(channel, carrier): + return _stub(channel).updateCarrier(carrier) + + +def get_airport(channel, airport_code: str): + return _stub(channel).getPort(AirportCode(airportCode=airport_code)) + + +def update_airport(channel, airport): + return _stub(channel).updatePort(airport) + + +def get_flight(channel, request): + return _stub(channel).getFlight(request) + + +def update_flight(channel, flight): + return _stub(channel).updateFlight(flight) + + +def get_flight_designator(channel, request): + return _stub(channel).getFlightDesignator(request) + + +def update_flight_designator(channel, designator): + return _stub(channel).updateFlightDesignator(designator) + + +def get_boarding_pass_record(channel, request): + return _stub(channel).getBoardingPassRecord(request) + + +def get_boarding_pass(channel, pass_id: str): + return _stub(channel).getBoardingPass(BoardingPassRequest(passId=Id(id=pass_id))) + + +def update_boarding_pass(channel, boarding_pass): + return _stub(channel).updateBoardingPass(boarding_pass) + + +__all__ = [ + "create_airport", + "create_boarding_pass", + "create_carrier", + "create_flight", + "create_flight_designator", + "delete_airport", + "delete_carrier", + "delete_flight", + "delete_flight_designator", + "get_airport", + "get_boarding_pass", + "get_boarding_pass_record", + "get_carrier", + "get_flight", + "get_flight_designator", + "update_airport", + "update_boarding_pass", + "update_carrier", + "update_flight", + "update_flight_designator", +] diff --git a/main.py b/main.py new file mode 100644 index 0000000..1eec554 --- /dev/null +++ b/main.py @@ -0,0 +1,76 @@ +"""Command-line entry point for the PassKit Python quickstart.""" + +from __future__ import annotations + +import argparse + +from quickstarts.api import PassKitApi +from quickstarts.client import ConnectionPool +from quickstarts.config import Config +from quickstarts.workflows.coupons import CouponsWorkflow +from quickstarts.workflows.event_tickets import EventTicketsWorkflow +from quickstarts.workflows.flights import FlightsWorkflow +from quickstarts.workflows.membership import MembershipWorkflow + +WORKFLOWS = { + "membership": MembershipWorkflow, + "loyalty": MembershipWorkflow, + "coupons": CouponsWorkflow, + "event-tickets": EventTicketsWorkflow, + "tickets": EventTicketsWorkflow, + "flights": FlightsWorkflow, +} + + +def pass_url(config: Config, identifier: str) -> str: + region = "pub2" if "pub2" in config.address else "pub1" + return f"https://{region}.pskt.io/{identifier}" + + +def run(command: str) -> None: + if command == "operations": + operations = PassKitApi.operations() + total = sum(len(methods) for methods in operations.values()) + for service, methods in operations.items(): + print(f"{service} ({len(methods)}): {', '.join(methods)}") + print(f"\n{total} SDK operations are available through PassKitApi.") + return + + config = Config.load() + config.validate(require_flights=command == "flights") + pool = ConnectionPool(config) + workflow = WORKFLOWS[command](pool, config) + try: + results = workflow.execute() + print("Created resources:") + for label, value in results.items(): + output = value if label.lower().endswith("url") else pass_url(config, value) + print(f" {label}: {output}") + finally: + try: + workflow.cleanup() + finally: + pool.close() + + +def main() -> None: + parser = argparse.ArgumentParser(description="Run a PassKit Python quickstart") + parser.add_argument( + "command", + choices=[ + "membership", + "loyalty", + "coupons", + "event-tickets", + "tickets", + "flights", + "operations", + ], + help="product workflow or SDK operation listing", + ) + args = parser.parse_args() + run(args.command) + + +if __name__ == "__main__": + main() diff --git a/membership/README.md b/membership/README.md new file mode 100644 index 0000000..ccfd431 --- /dev/null +++ b/membership/README.md @@ -0,0 +1,9 @@ +# Membership methods + +[`methods.py`](methods.py) provides one import point for creating, retrieving, +and listing programs and tiers; member enrolment, lookup and updates; +check-in/out; setting, earning and burning points; changing tiers; member event +history; and deletion. The individual scripts remain available for backwards +compatibility. + +Run the complete lifecycle with `python main.py membership`. diff --git a/membership/__init__.py b/membership/__init__.py new file mode 100644 index 0000000..7c73922 --- /dev/null +++ b/membership/__init__.py @@ -0,0 +1,4 @@ +"""Focused PassKit membership examples.""" + +from membership.methods import * # noqa: F403 +from membership.methods import __all__ diff --git a/membership/methods.py b/membership/methods.py new file mode 100644 index 0000000..8f538f4 --- /dev/null +++ b/membership/methods.py @@ -0,0 +1,109 @@ +"""Reusable membership examples collected behind one consistent interface.""" + +from passkit.io.common.common_objects_pb2 import Id +from passkit.io.common.filter_pb2 import Filters +from passkit.io.member.a_rpc_pb2_grpc import MembersStub +from passkit.io.member.member_pb2 import ( + ChangeTierRequest, + ListRequest, + MemberRecordByExternalIdRequest, + SetPointsRequest, +) +from passkit.io.member.tier_pb2 import TierRequestInput + +from membership.burnPoints import run as burn_points +from membership.checkInMember import run as check_in_member +from membership.checkOutMember import run as check_out_member +from membership.createProgram import run as create_program +from membership.createTier import run as create_tier +from membership.deleteMember import run as delete_member +from membership.deleteProgram import run as delete_program +from membership.earnPoints import run as earn_points +from membership.enrolMember import run as enrol_member +from membership.updateMember import run as update_member + + +def _stub(channel): + return channel if isinstance(channel, MembersStub) else MembersStub(channel) + + +def get_program(channel, program_id: str): + return _stub(channel).getProgram(Id(id=program_id)) + + +def list_programs(channel): + return list(_stub(channel).listPrograms(Filters(limit=-1))) + + +def get_tier(channel, program_id: str, tier_id: str): + return _stub(channel).getTier(TierRequestInput(programId=program_id, tierId=tier_id)) + + +def list_tiers(channel, program_id: str): + request = ListRequest(programId=program_id, filters=Filters(limit=-1)) + return list(_stub(channel).listTiers(request)) + + +def get_member_by_id(channel, member_id: str): + return _stub(channel).getMemberRecordById(Id(id=member_id)) + + +def get_member_by_external_id(channel, program_id: str, external_id: str): + return _stub(channel).getMemberRecordByExternalId( + MemberRecordByExternalIdRequest(programId=program_id, externalId=external_id) + ) + + +def list_members(channel, program_id: str): + request = ListRequest(programId=program_id, filters=Filters(limit=-1)) + return list(_stub(channel).listMembers(request)) + + +def count_members(channel, program_id: str): + return _stub(channel).countMembers(ListRequest(programId=program_id)) + + +def change_member_tier(channel, member_id: str, program_id: str, tier_id: str): + return _stub(channel).changeMemberTier( + ChangeTierRequest(memberId=member_id, programId=program_id, tierId=tier_id) + ) + + +def set_points(channel, member_id: str, program_id: str, points: float): + return _stub(channel).setPoints( + SetPointsRequest(id=member_id, programId=program_id, points=points) + ) + + +def list_member_events(channel, member_id: str): + return list(_stub(channel).listEventsForMember(Id(id=member_id))) + + +def delete_member_events(channel, member_id: str): + return _stub(channel).deleteEventsForMember(Id(id=member_id)) + + +__all__ = [ + "burn_points", + "change_member_tier", + "check_in_member", + "check_out_member", + "count_members", + "create_program", + "create_tier", + "delete_member", + "delete_member_events", + "delete_program", + "earn_points", + "enrol_member", + "get_member_by_external_id", + "get_member_by_id", + "get_program", + "get_tier", + "list_member_events", + "list_members", + "list_programs", + "list_tiers", + "set_points", + "update_member", +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..d17851a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,49 @@ +[build-system] +requires = ["setuptools>=84.0.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "passkit-python-quickstart" +version = "1.0.0" +description = "Runnable examples for the PassKit Python gRPC SDK" +readme = "README.md" +requires-python = ">=3.9" +license = "MIT" +license-files = ["LICENSE"] +dependencies = [ + "cryptography>=50.0.1,<51", + "passkit-python-grpc-sdk==1.1.162", + "python-dotenv>=1.1,<2", +] + +[project.optional-dependencies] +dev = ["ruff>=0.13,<1"] + +[project.scripts] +passkit-quickstart = "main:main" + +[tool.setuptools] +packages = [ + "coupons", + "event_tickets", + "flights", + "membership", + "quickstarts", + "quickstarts.workflows", +] +py-modules = ["main"] + +[tool.ruff] +line-length = 100 +target-version = "py39" +exclude = [ + "constants.py", + "coupons", + "flights", + "membership", + "quickstart-all.py", + "shared", +] + +[tool.ruff.lint] +select = ["E", "F", "I", "UP"] diff --git a/quickstarts/__init__.py b/quickstarts/__init__.py new file mode 100644 index 0000000..533d7df --- /dev/null +++ b/quickstarts/__init__.py @@ -0,0 +1 @@ +"""Developer-friendly PassKit Python quickstart helpers.""" diff --git a/quickstarts/api.py b/quickstarts/api.py new file mode 100644 index 0000000..bfdf004 --- /dev/null +++ b/quickstarts/api.py @@ -0,0 +1,72 @@ +"""Complete, low-level access to the generated PassKit SDK service methods.""" + +from __future__ import annotations + +from quickstarts.client import STUB_CLASSES + +DESTRUCTIVE_METHODS = { + "addAppleCertificate", + "bulkDeleteMembers", + "bulkDeleteTickets", + "bulkVoidCoupons", + "changeOwnPassword", + "changePassword", + "deleteAccount", + "deleteMembersBySegment", + "refreshApiSecret", + "resetPassword", + "revokeLegacyCredentials", + "sendNFCSigningCredentials", + "updateMembersBySegment", +} + + +class Service: + def __init__(self, pool, name: str, allow_destructive: bool): + self._pool = pool + self._name = name + self._allow_destructive = allow_destructive + + def __getattr__(self, method: str): + if method in DESTRUCTIVE_METHODS and not self._allow_destructive: + + def blocked(*_args, **_kwargs): + raise PermissionError( + f"{method} is a sensitive operation; construct PassKitApi with " + "allow_destructive=True to enable it" + ) + + return blocked + candidate = getattr(self._pool.service(self._name), method, None) + if candidate is None: + raise AttributeError(f"Unknown {self._name} SDK method: {method}") + return candidate + + def collect(self, method: str, request, **kwargs) -> list: + return list(getattr(self, method)(request, **kwargs)) + + +class PassKitApi: + def __init__(self, pool, *, allow_destructive: bool = False): + self._pool = pool + self._allow_destructive = allow_destructive + + def __getattr__(self, service: str) -> Service: + if service not in STUB_CLASSES: + raise AttributeError(f"Unknown PassKit service: {service}") + return Service(self._pool, service, self._allow_destructive) + + @staticmethod + def operations() -> dict[str, list[str]]: + operations: dict[str, list[str]] = {} + for service, stub_class in STUB_CLASSES.items(): + method_names = [] + # Generated stubs attach RPC callables in __init__, so use the paired + # service descriptor embedded in the module's imported pb2 module. + pb2 = __import__(stub_class.__module__.removesuffix("_grpc"), fromlist=["DESCRIPTOR"]) + for definition in pb2.DESCRIPTOR.services_by_name.values(): + if definition.name == stub_class.__name__.removesuffix("Stub"): + method_names = [method.name for method in definition.methods] + break + operations[service] = method_names + return operations diff --git a/quickstarts/client.py b/quickstarts/client.py new file mode 100644 index 0000000..45e8f9c --- /dev/null +++ b/quickstarts/client.py @@ -0,0 +1,86 @@ +"""Mutual-TLS gRPC connections and round-robin pooling.""" + +from __future__ import annotations + +import threading + +import grpc +from cryptography.hazmat.primitives import serialization +from passkit.io.analytics.a_rpc_pb2_grpc import AnalyticsStub +from passkit.io.core.a_rpc_certificates_pb2_grpc import CertificatesStub +from passkit.io.core.a_rpc_distribution_pb2_grpc import DistributionStub +from passkit.io.core.a_rpc_images_pb2_grpc import ImagesStub +from passkit.io.core.a_rpc_messages_pb2_grpc import MessagesStub +from passkit.io.core.a_rpc_others_pb2_grpc import IntegrationsStub, UsersStub +from passkit.io.core.a_rpc_templates_pb2_grpc import TemplatesStub +from passkit.io.event_tickets.a_rpc_pb2_grpc import EventTicketsStub +from passkit.io.flights.a_rpc_pb2_grpc import FlightsStub +from passkit.io.member.a_rpc_pb2_grpc import MembersStub +from passkit.io.raw.a_rpc_pb2_grpc import RawStub +from passkit.io.scheduler.a_rpc_pb2_grpc import SchedulerStub +from passkit.io.single_use_coupons.a_rpc_pb2_grpc import SingleUseCouponsStub + +from quickstarts.config import Config + +STUB_CLASSES = { + "analytics": AnalyticsStub, + "certificates": CertificatesStub, + "distribution": DistributionStub, + "images": ImagesStub, + "messages": MessagesStub, + "integrations": IntegrationsStub, + "users": UsersStub, + "templates": TemplatesStub, + "event_tickets": EventTicketsStub, + "flights": FlightsStub, + "members": MembersStub, + "raw": RawStub, + "scheduler": SchedulerStub, + "coupons": SingleUseCouponsStub, +} + + +def _private_key(path, passphrase: str | None) -> bytes: + pem = path.read_bytes() + if b"ENCRYPTED" not in pem: + return pem + if not passphrase: + raise ValueError("PASSKIT_PASSPHRASE is required for the encrypted private key") + key = serialization.load_pem_private_key(pem, password=passphrase.encode()) + return key.private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.PKCS8, + serialization.NoEncryption(), + ) + + +class Connection: + def __init__(self, config: Config): + credentials = grpc.ssl_channel_credentials( + root_certificates=config.root_certificate.read_bytes(), + private_key=_private_key(config.private_key, config.passphrase), + certificate_chain=config.certificate.read_bytes(), + ) + self.channel = grpc.secure_channel(config.address, credentials) + self.stubs = {name: cls(self.channel) for name, cls in STUB_CLASSES.items()} + + def close(self) -> None: + self.channel.close() + + +class ConnectionPool: + def __init__(self, config: Config): + size = 1 if config.connection_mode == "single" else config.pool_size + self._connections = [Connection(config) for _ in range(size)] + self._index = 0 + self._lock = threading.Lock() + + def service(self, name: str): + with self._lock: + connection = self._connections[self._index] + self._index = (self._index + 1) % len(self._connections) + return connection.stubs[name] + + def close(self) -> None: + for connection in self._connections: + connection.close() diff --git a/quickstarts/config.py b/quickstarts/config.py new file mode 100644 index 0000000..845d332 --- /dev/null +++ b/quickstarts/config.py @@ -0,0 +1,71 @@ +"""Environment-based quickstart configuration.""" + +from __future__ import annotations + +import os +from dataclasses import dataclass +from pathlib import Path + +from dotenv import load_dotenv + +ROOT = Path(__file__).resolve().parents[1] + + +def _path(value: str) -> Path: + path = Path(value).expanduser() + return path if path.is_absolute() else ROOT / path + + +@dataclass(frozen=True) +class Config: + address: str + root_certificate: Path + private_key: Path + certificate: Path + passphrase: str | None + connection_mode: str + pool_size: int + keep_assets: bool + recipient_email: str | None + apple_certificate: str | None + carrier_code: str + origin: str + destination: str + + @classmethod + def load(cls) -> Config: + load_dotenv(ROOT / ".env", override=False) + host = os.getenv("PASSKIT_ADDRESS", "grpc.pub1.passkit.io") + port = os.getenv("PASSKIT_PORT", "443") + return cls( + address=f"{host}:{port}", + root_certificate=_path(os.getenv("PASSKIT_ROOT_CERT", "certs/ca-chain.pem")), + private_key=_path(os.getenv("PASSKIT_PRIVATE_KEY", "certs/key.pem")), + certificate=_path(os.getenv("PASSKIT_CERTIFICATE", "certs/certificate.pem")), + passphrase=os.getenv("PASSKIT_PASSPHRASE") or None, + connection_mode=os.getenv("PASSKIT_CONNECTION_MODE", "pool").lower(), + pool_size=int(os.getenv("PASSKIT_POOL_SIZE", "5")), + keep_assets=os.getenv("PASSKIT_KEEP_ASSETS", "false").lower() == "true", + recipient_email=os.getenv("PASSKIT_RECIPIENT_EMAIL") or None, + apple_certificate=os.getenv("PASSKIT_APPLE_CERTIFICATE") or None, + carrier_code=os.getenv("PASSKIT_FLIGHT_CARRIER", "YY").upper(), + origin=os.getenv("PASSKIT_FLIGHT_ORIGIN", "YY4").upper(), + destination=os.getenv("PASSKIT_FLIGHT_DESTINATION", "ADP").upper(), + ) + + def validate(self, *, require_flights: bool = False, check_files: bool = True) -> None: + errors: list[str] = [] + if self.connection_mode not in {"single", "pool"}: + errors.append('PASSKIT_CONNECTION_MODE must be "single" or "pool"') + if self.pool_size < 1: + errors.append("PASSKIT_POOL_SIZE must be a positive integer") + if require_flights and not self.apple_certificate: + errors.append("PASSKIT_APPLE_CERTIFICATE is required for flights") + if len(self.carrier_code) != 2: + errors.append("PASSKIT_FLIGHT_CARRIER must be a two-character IATA code") + if check_files: + for path in (self.root_certificate, self.private_key, self.certificate): + if not path.is_file(): + errors.append(f"Credential file not found: {path}") + if errors: + raise ValueError("Invalid PassKit configuration:\n- " + "\n- ".join(errors)) diff --git a/quickstarts/workflow.py b/quickstarts/workflow.py new file mode 100644 index 0000000..689e35c --- /dev/null +++ b/quickstarts/workflow.py @@ -0,0 +1,99 @@ +"""Shared helpers used by all four quickstart workflows.""" + +from __future__ import annotations + +import base64 +from datetime import datetime, timezone +from pathlib import Path +from typing import Callable + +import grpc +from google.protobuf.timestamp_pb2 import Timestamp +from passkit.io.common.common_objects_pb2 import Id +from passkit.io.common.protocols_pb2 import PassProtocol +from passkit.io.common.template_pb2 import DefaultTemplateRequest +from passkit.io.image.image_pb2 import CreateImageInput, ImageData, ImageIds + +ROOT = Path(__file__).resolve().parents[1] + + +def timestamp(value: datetime) -> Timestamp: + result = Timestamp() + result.FromDatetime(value.astimezone(timezone.utc)) + return result + + +def image_string(path: Path) -> str: + return base64.b64encode(path.read_bytes()).decode("ascii") + + +class Workflow: + protocol: int = PassProtocol.PASS_PROTOCOL_DO_NOT_USE + + def __init__(self, pool, config): + self.pool = pool + self.config = config + self.cleanup_actions: list[tuple[str, Callable[[], object]]] = [] + self.image_ids = ImageIds() + + def service(self, name: str): + return self.pool.service(name) + + def remember(self, label: str, callback) -> None: + self.cleanup_actions.append((label, callback)) + + def create_images(self) -> ImageIds: + icon = image_string(ROOT / "assets/shared/icon.png") + logo = image_string(ROOT / "assets/shared/logo.png") + hero = image_string(ROOT / "assets/pass/hero.png") + strip = image_string(ROOT / "assets/pass/strip.png") + data = ImageData( + icon=icon, + logo=logo, + appleLogo=logo, + hero=hero, + eventStrip=strip, + strip=strip, + ) + self.image_ids = self.service("images").createImages( + CreateImageInput(name="Python quickstart images", imageData=data) + ) + for field in self.image_ids.DESCRIPTOR.fields: + image_id = getattr(self.image_ids, field.name) + if image_id: + self.remember( + f"{field.name} image", + lambda value=image_id: self.service("images").deleteImage(Id(id=value)), + ) + return self.image_ids + + def create_template(self, name: str, color: str = "#1F4E79") -> str: + template = self.service("templates").getDefaultTemplate( + DefaultTemplateRequest(protocol=self.protocol, revision=1) + ) + template.name = name + template.description = f"{name} pass" + template.timezone = "Europe/London" + template.imageIds.CopyFrom(self.image_ids) + template.ClearField("images") + template.colors.backgroundColor = color + result = self.service("templates").createTemplate(template) + self.remember( + f"{name} template", + lambda: self.service("templates").deleteTemplate(Id(id=result.id)), + ) + return result.id + + def cleanup(self) -> None: + if self.config.keep_assets: + print("PASSKIT_KEEP_ASSETS=true; generated resources were not deleted.") + return + print("Cleaning up generated resources...") + for label, callback in reversed(self.cleanup_actions): + try: + callback() + print(f"Deleted {label}.") + except grpc.RpcError as error: + if error.code() == grpc.StatusCode.NOT_FOUND: + continue + print(f"Could not delete {label}: {error.details()}") diff --git a/quickstarts/workflows/__init__.py b/quickstarts/workflows/__init__.py new file mode 100644 index 0000000..e000418 --- /dev/null +++ b/quickstarts/workflows/__init__.py @@ -0,0 +1 @@ +"""Runnable PassKit product workflows.""" diff --git a/quickstarts/workflows/coupons.py b/quickstarts/workflows/coupons.py new file mode 100644 index 0000000..48c6174 --- /dev/null +++ b/quickstarts/workflows/coupons.py @@ -0,0 +1,118 @@ +"""Single-use coupon lifecycle example.""" + +from datetime import datetime, timedelta, timezone + +from passkit.io.common.common_objects_pb2 import Id +from passkit.io.common.filter_pb2 import Filters +from passkit.io.common.personal_pb2 import Person +from passkit.io.common.project_pb2 import ProjectStatus +from passkit.io.common.protocols_pb2 import PassProtocol +from passkit.io.single_use_coupons.campaign_pb2 import CouponCampaign +from passkit.io.single_use_coupons.coupon_pb2 import Coupon, ListRequest +from passkit.io.single_use_coupons.offer_pb2 import ( + CouponExpirySettings, + CouponExpiryType, + CouponOffer, + RedemptionSettings, +) + +from quickstarts.workflow import Workflow, timestamp + + +class CouponsWorkflow(Workflow): + protocol = PassProtocol.SINGLE_USE_COUPON + + def execute(self) -> dict[str, str]: + print("Creating coupon images and templates") + self.create_images() + base_template = self.create_template("Python Quickstart Coupon") + redeemed_template = self.create_template("Python Quickstart Redeemed Coupon", "#777777") + + print("Creating campaign and offers") + campaign_id = ( + self.service("coupons") + .createCouponCampaign( + CouponCampaign( + name="Python Quickstart Coupon Campaign", + ianaTimezone="Europe/London", + status=[ + ProjectStatus.PROJECT_DRAFT, + ProjectStatus.PROJECT_ACTIVE_FOR_OBJECT_CREATION, + ], + ) + ) + .id + ) + self.remember( + "coupon campaign", + lambda: self.service("coupons").deleteCouponCampaign(Id(id=campaign_id)), + ) + now = datetime.now(timezone.utc) + + def create_offer(title: str, short_title: str) -> str: + return ( + self.service("coupons") + .createCouponOffer( + CouponOffer( + offerTitle=title, + offerShortTitle=short_title, + offerDetails="Save 10% with this Python quickstart coupon.", + offerFinePrint="Quickstart demonstration only.", + beforeRedeemPassTemplateId=base_template, + afterRedeemPassTemplateId=redeemed_template, + campaignId=campaign_id, + ianaTimezone="Europe/London", + issueStartDate=timestamp(now - timedelta(minutes=1)), + issueEndDate=timestamp(now + timedelta(days=30)), + couponExpirySettings=CouponExpirySettings( + couponExpiryType=CouponExpiryType.AUTO_EXPIRE_REDEMPTION_END_DATE + ), + redemptionSettings=RedemptionSettings( + redemptionStartDate=timestamp(now - timedelta(minutes=1)), + redemptionEndDate=timestamp(now + timedelta(days=30)), + ), + ) + ) + .id + ) + + base_offer = create_offer("Python Quickstart Offer", "Offer") + vip_offer = create_offer("Python Quickstart VIP Offer", "VIP Offer") + + print("Issuing and updating coupons") + email = self.config.recipient_email or "python.coupon@dummy.passkit.com" + + def issue(offer_id: str, external_id: str, name: str) -> tuple[str, Coupon]: + coupon = Coupon( + externalId=external_id, + campaignId=campaign_id, + offerId=offer_id, + person=Person(displayName=name, emailAddress=email), + ) + return self.service("coupons").createCoupon(coupon).id, coupon + + base_id, base_coupon = issue(base_offer, "python-coupon-base", "Coupon Holder") + vip_id, _ = issue(vip_offer, "python-coupon-vip", "VIP Coupon Holder") + base_coupon.id = base_id + base_coupon.person.displayName = "Updated Coupon Holder" + self.service("coupons").updateCoupon(base_coupon) + + print("Reading, listing, counting, redeeming, and voiding coupons") + self.service("coupons").getCouponById(Id(id=base_id)) + list( + self.service("coupons").listCouponsByCouponCampaign( + ListRequest(couponCampaignId=campaign_id, filters=Filters(limit=-1)) + ) + ) + self.service("coupons").countCouponsByCouponCampaign( + ListRequest(couponCampaignId=campaign_id, filters=Filters(limit=-1)) + ) + self.service("coupons").redeemCoupon( + Coupon(id=base_id, campaignId=campaign_id, offerId=base_offer) + ) + self.service("coupons").voidCoupon( + Coupon(id=vip_id, campaignId=campaign_id, offerId=vip_offer) + ) + + print(f"Created coupons: {base_id}, {vip_id}") + return {"baseCouponId": base_id, "vipCouponId": vip_id} diff --git a/quickstarts/workflows/event_tickets.py b/quickstarts/workflows/event_tickets.py new file mode 100644 index 0000000..9eef7de --- /dev/null +++ b/quickstarts/workflows/event_tickets.py @@ -0,0 +1,162 @@ +"""Event-ticket lifecycle example.""" + +from datetime import datetime, timedelta, timezone + +from passkit.io.common.common_objects_pb2 import Id +from passkit.io.common.filter_pb2 import Filters +from passkit.io.common.personal_pb2 import Person +from passkit.io.common.project_pb2 import ProjectStatus +from passkit.io.common.protocols_pb2 import PassProtocol +from passkit.io.event_tickets.event_pb2 import Event +from passkit.io.event_tickets.production_pb2 import Production +from passkit.io.event_tickets.ticket_pb2 import ( + IssueTicketRequest, + OrderNumberRequest, + RedeemTicketRequest, + Ticket, + TicketId, + TicketListRequest, + TicketNumberRequest, + ValidateTicketRequest, +) +from passkit.io.event_tickets.ticket_type_pb2 import TicketType +from passkit.io.event_tickets.venue_pb2 import Venue + +from quickstarts.workflow import Workflow, timestamp + + +class EventTicketsWorkflow(Workflow): + protocol = PassProtocol.EVENT_TICKETING + + def execute(self) -> dict[str, str]: + print("Creating event-ticket images and template") + self.create_images() + template_id = self.create_template("Python Quickstart Event Ticket", "#CD7F32") + + print("Creating production, venue, event, and ticket type") + production_id = ( + self.service("event_tickets") + .createProduction( + Production( + name="Python Quickstart Production", + finePrint="Quickstart demonstration only.", + status=[ + ProjectStatus.PROJECT_DRAFT, + ProjectStatus.PROJECT_ACTIVE_FOR_OBJECT_CREATION, + ], + ) + ) + .id + ) + self.remember( + "production", + lambda: self.service("event_tickets").deleteProduction(Production(id=production_id)), + ) + venue_id = ( + self.service("event_tickets") + .createVenue( + Venue( + name="Python Quickstart Venue", + address="123 Quickstart Street, London", + timezone="Europe/London", + ) + ) + .id + ) + self.remember( + "venue", + lambda: self.service("event_tickets").deleteVenue(Venue(id=venue_id)), + ) + + start = datetime.now(timezone.utc) + timedelta(days=7) + event_id = ( + self.service("event_tickets") + .createEvent( + Event( + production=Production(id=production_id, name="Python Quickstart Production"), + venue=Venue(id=venue_id, name="Python Quickstart Venue"), + doorsOpen=timestamp(start - timedelta(hours=1)), + scheduledStartDate=timestamp(start), + relevantDate=timestamp(start), + endDate=timestamp(start + timedelta(hours=3)), + ) + ) + .id + ) + self.remember( + "event", + lambda: self.service("event_tickets").deleteEvent(Event(id=event_id)), + ) + ticket_type_id = ( + self.service("event_tickets") + .createTicketType( + TicketType( + name="Python Quickstart General Admission", + productionId=production_id, + beforeRedeemPassTemplateId=template_id, + ) + ) + .id + ) + self.remember( + "ticket type", + lambda: self.service("event_tickets").deleteTicketType(TicketType(id=ticket_type_id)), + ) + + print("Issuing and updating ticket") + ticket_number = "PY-1001" + order_number = "PY-ORDER-1001" + ticket_id = ( + self.service("event_tickets") + .issueTicket( + IssueTicketRequest( + eventId=event_id, + ticketTypeId=ticket_type_id, + ticketNumber=ticket_number, + orderNumber=order_number, + person=Person( + displayName="Python Ticket Holder", + emailAddress=self.config.recipient_email + or "python.ticket@dummy.passkit.com", + ), + ) + ) + .id + ) + self.remember( + "ticket", + lambda: self.service("event_tickets").deleteTicket(TicketId(ticketId=ticket_id)), + ) + self.service("event_tickets").updateTicket( + Ticket(id=ticket_id, person=Person(displayName="Updated Ticket Holder")) + ) + + print("Reading, listing, validating, and redeeming ticket") + self.service("event_tickets").getTicketById(Id(id=ticket_id)) + self.service("event_tickets").getTicketByTicketNumber( + TicketNumberRequest(productionId=production_id, ticketNumber=ticket_number) + ) + self.service("event_tickets").getTicketsByOrderNumber( + OrderNumberRequest(productionId=production_id, orderNumber=order_number) + ) + list( + self.service("event_tickets").listTickets( + TicketListRequest( + productionId=production_id, + eventId=event_id, + filters=Filters(limit=-1), + ) + ) + ) + self.service("event_tickets").countTickets( + TicketListRequest(productionId=production_id, eventId=event_id) + ) + self.service("event_tickets").validateTicket( + ValidateTicketRequest(maxNumberOfValidations=3, ticket=TicketId(ticketId=ticket_id)) + ) + self.service("event_tickets").redeemTicket( + RedeemTicketRequest(ticket=TicketId(ticketId=ticket_id)) + ) + + print(f"Created event ticket: {ticket_id}") + return {"eventTicketId": ticket_id} diff --git a/quickstarts/workflows/flights.py b/quickstarts/workflows/flights.py new file mode 100644 index 0000000..9abc1f3 --- /dev/null +++ b/quickstarts/workflows/flights.py @@ -0,0 +1,196 @@ +"""Flight boarding-pass lifecycle example.""" + +from datetime import date, datetime, timedelta, timezone +from random import randint + +import grpc +from passkit.io.common.common_objects_pb2 import Date, Id, LocalDateTime, Time +from passkit.io.common.personal_pb2 import Person +from passkit.io.common.protocols_pb2 import PassProtocol +from passkit.io.flights.airport_pb2 import AirportCode, Port +from passkit.io.flights.boarding_pass_pb2 import ( + BoardingPassRecord, + BoardingPassRecordRequest, +) +from passkit.io.flights.carrier_pb2 import Carrier, CarrierCode +from passkit.io.flights.flight_designator_pb2 import ( + FlightDesignator, + FlightDesignatorRequest, +) +from passkit.io.flights.flight_pb2 import Flight, FlightRequest +from passkit.io.flights.passenger_pb2 import Passenger + +from quickstarts.workflow import Workflow + + +def passkit_date(value: date) -> Date: + return Date(year=value.year, month=value.month, day=value.day) + + +def local_time(value: datetime) -> LocalDateTime: + return LocalDateTime(dateTime=value.strftime("%Y-%m-%dT%H:%M:%S")) + + +class FlightsWorkflow(Workflow): + protocol = PassProtocol.FLIGHT_PROTOCOL + + def execute(self) -> dict[str, str]: + print("Creating flight images and template") + self.create_images() + template_id = self.create_template("Python Quickstart Flight", "#FFEA6C") + carrier = self.config.carrier_code + origin = self.config.origin + destination = self.config.destination + flight_number = str(randint(100, 999)) + departure = datetime.now(timezone.utc) + timedelta(days=7) + departure_date = passkit_date(departure.date()) + + print("Creating or reusing carrier and airports") + carrier_created = self._create_or_reuse_carrier(carrier) + if carrier_created: + self.remember( + f"carrier {carrier}", + lambda: self.service("flights").deleteCarrier(CarrierCode(carrierCode=carrier)), + ) + for code, created in ( + ( + origin, + self._create_or_reuse_port(origin, "YYYY", "Origin", "Europe/London"), + ), + ( + destination, + self._create_or_reuse_port(destination, "VHHH", "Destination", "Asia/Hong_Kong"), + ), + ): + if created: + self.remember( + f"airport {code}", + lambda value=code: self.service("flights").deletePort( + AirportCode(airportCode=value) + ), + ) + + print("Creating flight and flight designator") + request = FlightRequest( + carrierCode=carrier, + flightNumber=flight_number, + boardingPoint=origin, + deplaningPoint=destination, + departureDate=departure_date, + ) + self.service("flights").createFlight( + Flight( + carrierCode=carrier, + flightNumber=flight_number, + boardingPoint=origin, + deplaningPoint=destination, + departureDate=departure_date, + scheduledDepartureTime=local_time(departure), + boardingTime=local_time(departure - timedelta(minutes=45)), + gateClosingTime=local_time(departure - timedelta(minutes=15)), + scheduledArrivalTime=local_time(departure + timedelta(hours=8)), + passTemplateId=template_id, + ) + ) + self.remember("flight", lambda: self.service("flights").deleteFlight(request)) + + times = { + "scheduledDepartureTime": Time(hour=13), + "boardingTime": Time(hour=12, minute=15), + "gateClosingTime": Time(hour=12, minute=45), + "scheduledArrivalTime": Time(hour=21), + } + designator = FlightDesignator( + carrierCode=carrier, + flightNumber=flight_number, + revision=1, + active=True, + origin=origin, + destination=destination, + passTemplateId=template_id, + ) + for day in ("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"): + getattr(designator.schedule, day).CopyFrom( + getattr(designator.schedule, day).__class__(**times) + ) + self.service("flights").createFlightDesignator(designator) + designator_request = FlightDesignatorRequest( + carrierCode=carrier, flightNumber=flight_number, revision=1 + ) + self.remember( + "flight designator", + lambda: self.service("flights").deleteFlightDesignator(designator_request), + ) + self.service("flights").getFlight(request) + self.service("flights").getFlightDesignator(designator_request) + + print("Creating and reading boarding pass") + response = self.service("flights").createBoardingPass( + BoardingPassRecord( + operatingCarrierPNR=f"PY{flight_number}", + boardingPoint=origin, + deplaningPoint=destination, + carrierCode=carrier, + flightNumber=flight_number, + departureDate=departure_date, + passenger=Passenger( + passengerDetails=Person( + displayName="Python Passenger", + forename="Python", + surname="Passenger", + emailAddress=self.config.recipient_email + or "python.flight@dummy.passkit.com", + ) + ), + sequenceNumber=123, + seatNumber="12A", + **{"class": "Economy"}, + ) + ) + boarding_pass = response.boardingPasses[0] + boarding_request = BoardingPassRecordRequest(passId=Id(id=boarding_pass.id)) + self.remember( + "boarding pass", + lambda: self.service("flights").deleteBoardingPass(boarding_request), + ) + self.service("flights").getBoardingPassRecord(boarding_request) + + print(f"Created boarding pass: {boarding_pass.id}") + return {"boardingPassId": boarding_pass.id, "boardingPassUrl": boarding_pass.url} + + def _create_or_reuse_carrier(self, code: str) -> bool: + try: + self.service("flights").createCarrier( + Carrier( + airlineName="Python Quickstart Airline", + iataCarrierCode=code, + passTypeIdentifier=self.config.apple_certificate, + ) + ) + return True + except grpc.RpcError as error: + if error.code() != grpc.StatusCode.ALREADY_EXISTS: + raise + self.service("flights").getCarrier(CarrierCode(carrierCode=code)) + print(f"Carrier {code} already exists; reusing it.") + return False + + def _create_or_reuse_port(self, code: str, icao: str, city: str, timezone_name: str) -> bool: + try: + self.service("flights").createPort( + Port( + iataAirportCode=code, + icaoAirportCode=icao, + airportName=f"Python Quickstart {city} Airport", + cityName=city, + countryCode="GB" if city == "Origin" else "HK", + timezone=timezone_name, + ) + ) + return True + except grpc.RpcError as error: + if error.code() != grpc.StatusCode.ALREADY_EXISTS: + raise + self.service("flights").getPort(AirportCode(airportCode=code)) + print(f"Airport {code} already exists; reusing it.") + return False diff --git a/quickstarts/workflows/membership.py b/quickstarts/workflows/membership.py new file mode 100644 index 0000000..de759fd --- /dev/null +++ b/quickstarts/workflows/membership.py @@ -0,0 +1,154 @@ +"""Membership and loyalty lifecycle example.""" + +from passkit.io.common.common_objects_pb2 import Id +from passkit.io.common.filter_pb2 import FieldFilter, FilterGroup, Filters, Operator +from passkit.io.common.personal_pb2 import Person +from passkit.io.common.project_pb2 import ProjectStatus +from passkit.io.common.protocols_pb2 import PassProtocol +from passkit.io.member.member_pb2 import ( + EarnBurnPointsRequest, + ListRequest, + Member, + MemberCheckInOutRequest, + MemberRecordByExternalIdRequest, +) +from passkit.io.member.program_pb2 import BalanceType, PointsType, Program +from passkit.io.member.tier_pb2 import Tier + +from quickstarts.workflow import Workflow + + +class MembershipWorkflow(Workflow): + protocol = PassProtocol.MEMBERSHIP + + def execute(self) -> dict[str, str]: + print("Creating membership images and templates") + self.create_images() + bronze_template = self.create_template("Python Quickstart Bronze", "#CD7F32") + silver_template = self.create_template("Python Quickstart Silver", "#C0C0C0") + + print("Creating membership program and tiers") + program = Program( + name="Python Quickstart Loyalty Program", + status=[ + ProjectStatus.PROJECT_DRAFT, + ProjectStatus.PROJECT_ACTIVE_FOR_OBJECT_CREATION, + ], + pointsType=PointsType(balanceType=BalanceType.BALANCE_TYPE_INT), + ) + program_id = self.service("members").createProgram(program).id + self.remember( + "membership program", + lambda: self.service("members").deleteProgram(Id(id=program_id)), + ) + + bronze_tier = ( + self.service("members") + .createTier( + Tier( + id="bronze", + name="Bronze", + tierIndex=1, + programId=program_id, + passTemplateId=bronze_template, + timezone="Europe/London", + ) + ) + .id + ) + silver_tier = ( + self.service("members") + .createTier( + Tier( + id="silver", + name="Silver", + tierIndex=2, + programId=program_id, + passTemplateId=silver_template, + timezone="Europe/London", + ) + ) + .id + ) + + print("Enrolling and updating members") + email = self.config.recipient_email or "python.member@dummy.passkit.com" + bronze_external_id = "python-quickstart-bronze" + bronze = Member( + programId=program_id, + tierId=bronze_tier, + externalId=bronze_external_id, + person=Person( + displayName="Bronze Member", + forename="Bronze", + surname="Member", + emailAddress=email, + ), + ) + bronze_id = self.service("members").enrolMember(bronze).id + silver_id = ( + self.service("members") + .enrolMember( + Member( + programId=program_id, + tierId=silver_tier, + externalId="python-quickstart-silver", + person=Person( + displayName="Silver Member", + forename="Silver", + surname="Member", + emailAddress=email, + ), + ) + ) + .id + ) + + self.service("members").checkInMember( + MemberCheckInOutRequest( + memberId=bronze_id, + address="London, UK", + lat=51.5074, + lon=-0.1278, + ) + ) + self.service("members").checkOutMember( + MemberCheckInOutRequest(memberId=bronze_id, address="London, UK") + ) + self.service("members").earnPoints( + EarnBurnPointsRequest(id=bronze_id, programId=program_id, points=100) + ) + self.service("members").burnPoints( + EarnBurnPointsRequest(id=bronze_id, programId=program_id, points=25) + ) + bronze.id = bronze_id + bronze.person.displayName = "Updated Bronze Member" + self.service("members").updateMember(bronze) + + print("Reading, listing, and counting members") + self.service("members").getMemberRecordById(Id(id=bronze_id)) + self.service("members").getMemberRecordByExternalId( + MemberRecordByExternalIdRequest(programId=program_id, externalId=bronze_external_id) + ) + filters = Filters( + limit=-1, + filterGroups=[ + FilterGroup( + condition=Operator.AND, + fieldFilters=[ + FieldFilter( + filterField="passStatus", + filterValue="PASS_ISSUED", + filterOperator="eq", + ) + ], + ) + ], + ) + request = ListRequest(programId=program_id, filters=filters) + list(self.service("members").listMembers(request)) + self.service("members").countMembers(request) + list(self.service("members").listEventsForMember(Id(id=bronze_id))) + + print(f"Created membership passes: {bronze_id}, {silver_id}") + return {"bronzePassId": bronze_id, "silverPassId": silver_id} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b4ed380 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +cryptography>=50.0.1,<51 +passkit-python-grpc-sdk==1.1.162 +python-dotenv>=1.1,<2 diff --git a/tests/test_api.py b/tests/test_api.py new file mode 100644 index 0000000..5ec43c0 --- /dev/null +++ b/tests/test_api.py @@ -0,0 +1,28 @@ +import unittest + +from quickstarts.api import DESTRUCTIVE_METHODS, PassKitApi, Service + + +class FakePool: + def service(self, _name): + return type("Stub", (), {"safe": lambda self, request: request})() + + +class ApiTests(unittest.TestCase): + def test_operations_exposes_every_service(self): + operations = PassKitApi.operations() + self.assertGreaterEqual(len(operations), 14) + self.assertIn("createProgram", operations["members"]) + self.assertIn("issueTicket", operations["event_tickets"]) + self.assertIn("createBoardingPass", operations["flights"]) + self.assertGreater(sum(map(len, operations.values())), 200) + + def test_sensitive_methods_are_blocked_by_default(self): + service = Service(FakePool(), "members", False) + method = next(iter(DESTRUCTIVE_METHODS)) + with self.assertRaises(PermissionError): + getattr(service, method)(object()) + + def test_safe_method_is_forwarded(self): + marker = object() + self.assertIs(Service(FakePool(), "members", False).safe(marker), marker) diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 0000000..5b568c1 --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,44 @@ +import os +import tempfile +import unittest +from dataclasses import replace +from pathlib import Path +from unittest.mock import patch + +from quickstarts.config import Config + + +class ConfigTests(unittest.TestCase): + def test_defaults_are_developer_friendly(self): + with patch.dict(os.environ, {}, clear=True): + config = Config.load() + self.assertEqual(config.address, "grpc.pub1.passkit.io:443") + self.assertEqual(config.connection_mode, "pool") + self.assertEqual(config.pool_size, 5) + self.assertFalse(config.keep_assets) + + def test_validation_reports_all_missing_files(self): + with tempfile.TemporaryDirectory() as directory: + missing = Path(directory) / "missing.pem" + config = Config( + address="grpc.pub1.passkit.io:443", + root_certificate=missing, + private_key=missing, + certificate=missing, + passphrase=None, + connection_mode="pool", + pool_size=5, + keep_assets=False, + recipient_email=None, + apple_certificate=None, + carrier_code="YY", + origin="YY4", + destination="ADP", + ) + with self.assertRaisesRegex(ValueError, "Credential file not found"): + config.validate() + + def test_flights_require_apple_certificate(self): + config = replace(Config.load(), apple_certificate=None) + with self.assertRaisesRegex(ValueError, "PASSKIT_APPLE_CERTIFICATE"): + config.validate(require_flights=True, check_files=False) diff --git a/tests/test_event_ticket_methods.py b/tests/test_event_ticket_methods.py new file mode 100644 index 0000000..c3138ef --- /dev/null +++ b/tests/test_event_ticket_methods.py @@ -0,0 +1,29 @@ +import unittest + +import event_tickets + + +class EventTicketMethodsTests(unittest.TestCase): + def test_guided_event_ticket_methods_are_exported(self): + expected = { + "count_tickets", + "create_event", + "create_production", + "create_ticket_type", + "create_venue", + "delete_event", + "delete_production", + "delete_ticket", + "delete_ticket_type", + "delete_venue", + "get_ticket_by_id", + "get_ticket_by_number", + "get_tickets_by_order_number", + "issue_ticket", + "list_tickets", + "redeem_ticket", + "update_ticket", + "validate_ticket", + } + self.assertTrue(expected.issubset(event_tickets.__all__)) + self.assertTrue(all(callable(getattr(event_tickets, name)) for name in expected)) diff --git a/tests/test_product_methods.py b/tests/test_product_methods.py new file mode 100644 index 0000000..0f6d0ae --- /dev/null +++ b/tests/test_product_methods.py @@ -0,0 +1,14 @@ +import unittest + +import coupons +import event_tickets +import flights +import membership + + +class ProductMethodsTests(unittest.TestCase): + def test_each_product_exports_callable_methods(self): + for product in (membership, coupons, event_tickets, flights): + with self.subTest(product=product.__name__): + self.assertTrue(product.__all__) + self.assertTrue(all(callable(getattr(product, name)) for name in product.__all__)) diff --git a/tests/test_workflows.py b/tests/test_workflows.py new file mode 100644 index 0000000..d19acdd --- /dev/null +++ b/tests/test_workflows.py @@ -0,0 +1,138 @@ +import tempfile +import unittest +from pathlib import Path + +from passkit.io.common.common_objects_pb2 import Id, PassBundle +from passkit.io.common.template_pb2 import PassTemplate +from passkit.io.flights.boarding_pass_pb2 import BoardingPassesResponse +from passkit.io.image.image_pb2 import ImageIds + +from quickstarts.config import Config +from quickstarts.workflows.coupons import CouponsWorkflow +from quickstarts.workflows.event_tickets import EventTicketsWorkflow +from quickstarts.workflows.flights import FlightsWorkflow +from quickstarts.workflows.membership import MembershipWorkflow + + +class FakeStub: + def __init__(self, calls): + self.calls = calls + self.counter = 0 + + def __getattr__(self, method): + def call(request): + self.calls.append((method, request)) + self.counter += 1 + if method == "createImages": + return ImageIds( + icon="icon", + logo="logo", + appleLogo="apple", + hero="hero", + eventStrip="event-strip", + strip="strip", + ) + if method == "getDefaultTemplate": + return PassTemplate() + if method == "createBoardingPass": + return BoardingPassesResponse( + boardingPasses=[PassBundle(id="boarding-pass", url="https://example.test/pass")] + ) + if method.startswith("list"): + return iter(()) + return Id(id=f"id-{self.counter}") + + return call + + +class FakePool: + def __init__(self): + self.calls = [] + self.stubs = {} + + def service(self, name): + return self.stubs.setdefault(name, FakeStub(self.calls)) + + +def config() -> Config: + missing = Path(tempfile.gettempdir()) / "unused.pem" + return Config( + address="grpc.pub1.passkit.io:443", + root_certificate=missing, + private_key=missing, + certificate=missing, + passphrase=None, + connection_mode="pool", + pool_size=2, + keep_assets=False, + recipient_email=None, + apple_certificate="pass.com.example.airline", + carrier_code="YY", + origin="YY4", + destination="ADP", + ) + + +class WorkflowTests(unittest.TestCase): + def exercise(self, workflow_class, required_methods): + pool = FakePool() + result = workflow_class(pool, config()).execute() + called = {method for method, _request in pool.calls} + self.assertTrue(required_methods <= called) + self.assertTrue(result) + + def test_membership_lifecycle(self): + self.exercise( + MembershipWorkflow, + { + "createProgram", + "createTier", + "enrolMember", + "earnPoints", + "burnPoints", + "listMembers", + }, + ) + + def test_coupon_lifecycle(self): + pool = FakePool() + result = CouponsWorkflow(pool, config()).execute() + called = {method for method, _request in pool.calls} + self.assertTrue( + { + "createCouponCampaign", + "createCouponOffer", + "createCoupon", + "redeemCoupon", + "voidCoupon", + } + <= called + ) + offers = [request for method, request in pool.calls if method == "createCouponOffer"] + self.assertTrue(all(len(offer.offerShortTitle) <= 10 for offer in offers)) + self.assertTrue(result) + + def test_event_ticket_lifecycle(self): + self.exercise( + EventTicketsWorkflow, + { + "createProduction", + "createVenue", + "createEvent", + "createTicketType", + "issueTicket", + "redeemTicket", + }, + ) + + def test_flight_lifecycle(self): + self.exercise( + FlightsWorkflow, + { + "createCarrier", + "createPort", + "createFlight", + "createFlightDesignator", + "createBoardingPass", + }, + ) From 30149cb2afa834d21f7bccf85e04923a3d935320 Mon Sep 17 00:00:00 2001 From: Claudia Anderson Date: Tue, 8 Sep 2026 10:57:47 +0100 Subject: [PATCH 2/3] Update pyproject.toml --- pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d17851a..abf07d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,8 @@ [build-system] -requires = ["setuptools>=84.0.0"] +requires = [ + "setuptools>=82.0.1,<83; python_version < '3.10'", + "setuptools>=84.0.0; python_version >= '3.10'", +] build-backend = "setuptools.build_meta" [project] From bee42c416b2b2c39360999384d2b8282179a334f Mon Sep 17 00:00:00 2001 From: Claudia Anderson Date: Tue, 8 Sep 2026 11:02:23 +0100 Subject: [PATCH 3/3] Fix Python 3.9 compatibility in focused examples --- coupons/redeemCoupon.py | 2 ++ event_tickets/methods.py | 2 ++ flights/createFlight.py | 2 ++ flights/deleteAirport.py | 2 ++ flights/deleteCarrier.py | 2 ++ membership/updateMember.py | 2 ++ 6 files changed, 12 insertions(+) diff --git a/coupons/redeemCoupon.py b/coupons/redeemCoupon.py index b9d8f60..2e2d5ec 100644 --- a/coupons/redeemCoupon.py +++ b/coupons/redeemCoupon.py @@ -1,4 +1,6 @@ # coupons/redeemCoupon.py +from __future__ import annotations + import grpc from passkit.io.single_use_coupons import a_rpc_pb2_grpc as coupons_grpc, coupon_pb2 diff --git a/event_tickets/methods.py b/event_tickets/methods.py index 97ab83f..a282e03 100644 --- a/event_tickets/methods.py +++ b/event_tickets/methods.py @@ -1,5 +1,7 @@ """Reusable, focused examples for the PassKit Event Tickets API.""" +from __future__ import annotations + from datetime import datetime, timedelta, timezone import grpc diff --git a/flights/createFlight.py b/flights/createFlight.py index f13eaf5..595ee2e 100644 --- a/flights/createFlight.py +++ b/flights/createFlight.py @@ -1,4 +1,6 @@ # flights/createFlight.py +from __future__ import annotations + import grpc import datetime from typing import Optional, Tuple diff --git a/flights/deleteAirport.py b/flights/deleteAirport.py index ef460ac..2682c65 100644 --- a/flights/deleteAirport.py +++ b/flights/deleteAirport.py @@ -1,4 +1,6 @@ # flights/deleteAirport.py +from __future__ import annotations + import grpc from passkit.io.flights import a_rpc_pb2_grpc as flights_grpc, airport_pb2 diff --git a/flights/deleteCarrier.py b/flights/deleteCarrier.py index 9845ca3..7afb399 100644 --- a/flights/deleteCarrier.py +++ b/flights/deleteCarrier.py @@ -1,4 +1,6 @@ # flights/deleteCarrier.py +from __future__ import annotations + import grpc from passkit.io.flights import a_rpc_pb2_grpc as flights_grpc, carrier_pb2 diff --git a/membership/updateMember.py b/membership/updateMember.py index 49411bd..e7cd22e 100644 --- a/membership/updateMember.py +++ b/membership/updateMember.py @@ -1,4 +1,6 @@ # membership/updateMember.py +from __future__ import annotations + import grpc from passkit.io.member import a_rpc_pb2_grpc as member_grpc, member_pb2 from passkit.io.common import personal_pb2