Skip to main content

Muffin‑REST

Muffin‑REST simplifies building RESTful APIs with Muffin by offering:

  • Declarative API class with resource registration
  • Built-in filtering, sorting, pagination, and search
  • Support for:
  • Swagger/OpenAPI autodocumentation
  • Works with asyncio, Trio, and Curio

Tests Status PyPI Version Python Versions

Requirements

  • Python >= 3.11
  • Trio requires Peewee backend

Installation

Install core package:

pip install muffin-rest

Add optional backend support:

  • SQLAlchemy Core: pip install muffin-rest[sqlalchemy]
  • Peewee ORM: pip install muffin-rest[peewee]
  • YAML support for Swagger: pip install muffin-rest[yaml]

Quickstart (Peewee example)

from muffin import Application
from muffin_rest import API
from muffin_rest.peewee import PeeweeEndpoint
from models import User  # your Peewee model

app = Application("myapp")
api = API(title="User Service", version="1.0")

@api.route
class UsersEndpoint(PeeweeEndpoint):
    class Meta:
        model = User
        lookup_field = "id"
        filters = ["name", "email"]
        ordering = ["-created_at"]

api.setup(app, prefix="/api", swagger=True)

Endpoints available:

  • GET /api/users/ — list with pagination, search, filtering
  • POST /api/users/ — create
  • GET /api/users/{id}/ — retrieve
  • PUT /api/users/{id}/ — replace
  • PATCH /api/users/{id}/ — update
  • DELETE /api/users/{id}/ — remove
  • Docs: /api/docs/, OpenAPI spec: /api/openapi.json

Usage with SQLAlchemy

from muffin_rest import API
from muffin_rest.sqlalchemy import SAEndpoint
from models import my_table, db_engine

api = API()
@api.route
class MySAEndpoint(SAEndpoint):
    class Meta:
        table = my_table
        database = db_engine

api.setup(app)

Usage with MongoDB

from muffin_rest import API
from muffin_rest.mongo import MongoEndpoint
from models import mongo_collection

api = API()
@api.route
class MyMongoEndpoint(MongoEndpoint):
    class Meta:
        collection = mongo_collection

api.setup(app)

Advanced Configuration

Customize Swagger and routes via constructor:

api = API(
    title="Service API",
    version="2.1",
    swagger_ui=True,
    openapi_path="/api/openapi.json",
    docs_path="/api/docs/"
)

Contributing & Examples

  • See examples/ for live application demos
  • Tests in tests/ focus on filtering, pagination, status codes
  • Check CHANGELOG.md for latest changes

Bug Tracker

Report bugs or request features: https://github.com/klen/muffin-rest/issues

Contributing

Repo: https://github.com/klen/muffin-rest Pull requests, example additions, docs improvements welcome!

Contributors

  • klen (Kirill Klenov)

License

Licensed under the MIT license.

Release files for muffin-rest 14.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for muffin-rest 14.1.1
File Size Uploaded
muffin_rest-14.1.1.tar.gz 24.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for muffin-rest 14.1.1
File Interpreter ABI Platform
muffin_rest-14.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 61.4 kB

Release files / muffin_rest-14.1.1.tar.gz

Download URL muffin_rest-14.1.1.tar.gz
Size 24.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7c95bcced53c2d38b49ea610cb2551759040da18f436e1194f6bc56bd5a51632
BLAKE2b-256 checksum
How to use checksums
c5ae1db9306344a9ba8c11e738c520123cf3ac04a279ece4de56a6ce0e75817c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / muffin_rest-14.1.1-py3-none-any.whl

Download URL muffin_rest-14.1.1-py3-none-any.whl
Size 37.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f3a4a9bac84b4fe16b700842f89ae45738fc2d4c6fb1020cbad71e583d71aac4
BLAKE2b-256 checksum
How to use checksums
ca02c0c4290d93e737dbcaebe6df04c324fdd09a2a89fb895ef12a3173169f3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

14.1.1 This release

2 release files

14.0.0

2 release files

13.5.5

2 release files

13.5.3

2 release files

13.5.1

2 release files

13.5.0

2 release files

13.3.3

2 release files

13.3.2

2 release files

13.3.1

2 release files

13.2.0

2 release files

13.0.3

2 release files

13.0.2

2 release files

12.0.2

2 release files

12.0.1

2 release files

11.0.3

2 release files

11.0.1

2 release files

10.0.0

2 release files

9.4.0

2 release files

9.3.0

2 release files

9.2.0

2 release files

9.1.1

2 release files

9.0.0

2 release files

8.1.0

2 release files

8.0.0

2 release files

7.3.5

2 release files

7.3.4

2 release files

7.3.3

2 release files

7.3.2

2 release files

7.3.1

2 release files

7.2.1

2 release files

7.2.0

2 release files

7.1.0

2 release files

7.0.0

2 release files

6.0.3

2 release files

6.0.1

2 release files

6.0.0

2 release files

5.2.0

2 release files

5.1.14

2 release files

5.1.11

2 release files

5.1.10

2 release files

5.1.9

2 release files

5.1.8

2 release files

5.1.7

2 release files

5.1.6

2 release files

5.1.5

2 release files

5.1.4

2 release files

5.1.3

2 release files

5.1.2

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.2

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.9.0

2 release files

4.8.8

2 release files

4.8.7

2 release files

4.8.6

2 release files

4.8.5

2 release files

4.8.1

2 release files

4.8.0

2 release files

4.7.1

2 release files

4.7.0

2 release files

4.6.7

2 release files

4.6.6

2 release files

4.6.5

2 release files

4.6.4

2 release files

4.6.3

2 release files

4.6.2

2 release files

4.6.1

2 release files

4.5.2

2 release files

4.5.1

2 release files

4.5.0

2 release files

4.4.3

2 release files

4.4.2

2 release files

4.4.1

2 release files

4.4.0

2 release files

4.3.3

2 release files

4.3.2

2 release files

4.3.1

2 release files

4.3.0

2 release files

4.2.7

2 release files

4.2.6

2 release files

4.2.5

2 release files

4.2.4

2 release files

4.2.3

2 release files

4.2.2

2 release files

4.2.1

2 release files

4.2.0

2 release files

4.1.3

2 release files

4.1.2

2 release files

4.1.1

2 release files

4.0.2

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.4

2 release files

3.4.3

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.3

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.8.0

2 release files

2.7.4

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.5

2 release files

2.6.4

2 release files

2.6.1

1 release file

2.6.0

1 release file

2.5.4

1 release file

2.5.3

1 release file

2.5.2

1 release file

2.5.1

1 release file

2.5.0

1 release file

2.4.1

1 release file

2.4.0

1 release file

2.3.3

1 release file

2.3.2

1 release file

2.3.1

1 release file

2.3.0

1 release file

2.2.5

1 release file

2.2.4

1 release file

2.2.3

1 release file

2.2.2

1 release file

2.2.0

1 release file

2.1.10

1 release file

2.1.9

1 release file

2.1.7

1 release file

2.1.6

1 release file

2.1.5

1 release file

2.1.4

1 release file

2.1.3

1 release file

2.1.2

1 release file

2.1.1

1 release file

2.1.0

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.6.9

2 release files

1.6.8

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.33

2 release files

0.0.32

2 release files

0.0.31

2 release files

0.0.30

2 release files

0.0.29

2 release files

0.0.28

2 release files

0.0.27

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page