Canonical Pydantic schemas for QueryTek Education Benefits Manager (EBM)
Project description
ebm-schemas
Canonical Pydantic models used across the QueryTek EBM services.
This package provides small, stable, and extensible Pydantic models used as the single source of truth for API contracts, worker payloads, and OpenAPI generation.
Included models (Phase‑0)
- Person
- Course
- Milestone
- Refund
- Entitlement
- Provider
- Enrollment
- Transaction
- Organization
- WebhookEvent
- EntitlementAssignment
Purpose
- Provide canonical, backwards-compatible shapes for payloads exchanged between services.
- Make the OpenAPI spec authoritative by using the same models in the service code and the exporter.
- Allow other services to import the models and validate provider payloads with a shared contract.
Extension rules & versioning
- Backwards-compatible changes:
- Add new optional fields freely.
- Add new models in minor releases.
- Breaking changes:
- Avoid removing or renaming existing fields.
- If you must break a model, introduce a new versioned model and bump the package major version.
- Versioning policy:
- The package follows semantic-style versioning for consumer consumption (0.x for early development). When stable, move to 1.0.0.
How to use locally
Install editable during development:
cd /path/to/repo
. services/ebm-api/venv/bin/activate
pip install -e libs/ebm_schemas
Import in code:
from ebm_schemas import Person, Provider, WebhookEvent
Building a wheel locally
Recommended: use the build module (PEP 517):
python -m pip install --upgrade build
cd libs/ebm_schemas
python -m build --wheel
# wheel will be in libs/ebm_schemas/dist/
Publishing
- To create a git tag and GitHub release:
- Tag:
git tag -a v0.2.0 -m "ebm-schemas 0.2.0" - Push:
git push origin v0.2.0 - Create release and attach wheel (or let CI create release artifacts).
- Tag:
- To publish to PyPI (if desired), use twine:
python -m pip install --upgrade twine
python -m twine upload dist/ebm_schemas-0.2.0-*.whl
(Only publish to PyPI if you want the package publicly available.)
Notes
- The package depends on
email-validatorbecause models usepydantic.EmailStr. - The exporter script has been made robust to automatically import and inject these canonical schemas into the OpenAPI export used by the ebm-api service.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ebm_schemas-0.2.2-py3-none-any.whl.
File metadata
- Download URL: ebm_schemas-0.2.2-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55655e7455f21b2540c574d7cc031eebf0a14b9779e5fa8483044896ae0f29f4
|
|
| MD5 |
7ad7108a98be4ae38321c272c45e11e4
|
|
| BLAKE2b-256 |
d2b6ebccb61486c2c07c966cf2499ca39aaf02dca4e341bf5603d2cdd841be3b
|
Provenance
The following attestation bundles were made for ebm_schemas-0.2.2-py3-none-any.whl:
Publisher:
release.yml on Extanto-Technology-LLC/querytek-ebm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ebm_schemas-0.2.2-py3-none-any.whl -
Subject digest:
55655e7455f21b2540c574d7cc031eebf0a14b9779e5fa8483044896ae0f29f4 - Sigstore transparency entry: 734380203
- Sigstore integration time:
-
Permalink:
Extanto-Technology-LLC/querytek-ebm@c4f454d7666f3d772170539c28b1fb7bc073fb6c -
Branch / Tag:
refs/tags/vGitHubReleaseWorking - Owner: https://github.com/Extanto-Technology-LLC
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c4f454d7666f3d772170539c28b1fb7bc073fb6c -
Trigger Event:
push
-
Statement type: