Python API client for the SoftwareONE Marketplace Platform (MPT) API. Provides synchronous
(MPTClient) and asynchronous (AsyncMPTClient) clients built on httpx, with typed
resource services, mixin-based HTTP operations, and an RQL query builder.
README.md— repository overview, quick start, and documentation mapdocs/usage.md— installation, configuration, Python usage examples, and supported Docker-based commandsdocs/architecture.md— layered architecture, directory structure, and key abstractionsdocs/local-development.md— Docker-only setup and execution modeldocs/testing.md— repository-specific testing strategy and command mappingdocs/contributing.md— repository-specific workflow and links to shared standardsdocs/documentation.md— repository-specific documentation rules
Then inspect the code paths relevant to the task:
mpt_api_client/mpt_client.py— public sync and async client entry pointsmpt_api_client/http/— HTTP clients, services, query state, and reusable mixinsmpt_api_client/resources/— domain resource groups such as catalog, commerce, billing, and integrationmpt_api_client/models/— response model layer and collection wrappersmpt_api_client/rql/— fluent RQL query buildertests/unit/— unit coverage for transport, resources, models, and query buildertests/e2e/— live API coverage by domainmake/andcompose.yaml— Docker-based local command entry points
The upstream API contract is the MPT OpenAPI spec: https://api.s1.show/public/v1/openapi.json
| Command | Purpose |
|---|---|
make build |
Build the Docker development environment |
make test |
Run unit tests |
make check |
Run all linting and type checks |
make check-all |
Run checks + tests |
make format |
Auto-format code |
make bash |
Open a shell in the Docker container |
make run |
Start an IPython session in Docker |
- Prefer Docker-based
maketargets over ad hoc local Python commands. - Keep
README.mdconcise and navigational. - Put topic-specific documentation under
docs/instead of expandingREADME.md. - Link shared engineering rules from
mpt-extension-skillsinstead of duplicating them locally.
mpt_api_client/
├── mpt_client.py # MPTClient / AsyncMPTClient entry points
├── http/ # HTTP transport, services, mixins
├── resources/ # API domain modules (catalog, commerce, billing, …)
├── models/ # Response model classes
├── rql/ # RQL query builder
└── exceptions.py # Error hierarchy