plain-api changelog
0.28.0 (2026-03-12)
What's changed
- Updated all imports from
plain.models to plain.postgres in models, views, migrations, and README examples.
Upgrade instructions
- Update imports:
from plain.models to from plain.postgres, from plain import models to from plain import postgres.
0.27.2 (2026-03-10)
What's changed
- Updated README code examples to use typed fields (
types.ForeignKeyField with type annotations) (772345d4e1f1)
Upgrade instructions
0.27.1 (2026-03-10)
What's changed
- Refactored OpenAPI
request_form decorator to build the JSON schema using named intermediate dicts instead of deeply nested access, eliminating type: ignore comments (f56c6454b164)
- Added explicit type annotations to
response_schema, field_mappings, and api_versions (f56c6454b164)
Upgrade instructions
0.27.0 (2026-03-06)
What's changed
- Updated OpenAPI schema generator to access
view_class directly on URLPattern instead of through URLPattern.view.view_class, adapting to the view API changes in plain 0.118.0 (0d0c8a64cb45)
Upgrade instructions
0.26.3 (2026-02-26)
What's changed
- Auto-formatted config files with updated linter configuration (028bb95c3ae3)
Upgrade instructions
0.26.2 (2026-02-04)
What's changed
- Added
__all__ exports to models, schemas, versioning, and views modules for explicit public API boundaries (f26a63a5c941)
Upgrade instructions
0.26.1 (2026-01-28)
What's changed
Upgrade instructions
0.26.0 (2026-01-15)
What's changed
- Added description text to the API keys admin viewset (0fc4dd3)
Upgrade instructions
0.25.0 (2026-01-13)
What's changed
- Improved README documentation with FAQs section covering common questions about optional API keys, status codes, and request body access (da37a78)
Upgrade instructions
0.24.0 (2026-01-13)
What's changed
- HTTP exceptions (
NotFoundError404, ForbiddenError403) are now imported from plain.http instead of plain.exceptions (b61f909)
Upgrade instructions
- Update imports of
NotFoundError404 and ForbiddenError403 from plain.exceptions to plain.http (e.g., from plain.http import NotFoundError404)
0.23.0 (2026-01-13)
What's changed
- HTTP exceptions have been renamed to include the status code in the name (e.g.,
Http404 โ NotFoundError404, PermissionDenied โ ForbiddenError403) (5a1f020)
- Response classes have been renamed to use a
Response suffix (e.g., ResponseRedirect โ RedirectResponse, ResponseBadRequest removed) (fad5bf2)
Upgrade instructions
- Replace
Http404 with NotFoundError404 from plain.exceptions
- Replace
PermissionDenied with ForbiddenError403 from plain.exceptions
- Replace
ResponseBadRequest(...) with Response(..., status_code=400) from plain.http
0.22.0 (2025-12-26)
What's changed
- Added built-in admin views for managing API keys when
plain-admin is installed (960ce39)
Upgrade instructions
0.21.1 (2025-12-22)
What's changed
- Internal type annotation improvements in OpenAPI decorators (539a706)
Upgrade instructions
0.21.0 (2025-11-21)
What's changed
- Updated documentation to use
ForeignKeyField instead of ForeignKey to match the plain-models rename (8010204)
Upgrade instructions
- If you followed the README examples using
models.ForeignKey, update your code to use models.ForeignKeyField instead
0.20.1 (2025-11-17)
What's changed
- Removed
ClassVar from query type annotation for improved type checker compatibility (1c624ff)
Upgrade instructions
0.20.0 (2025-11-14)
What's changed
- The
related_name parameter has been removed from ForeignKey fields. Reverse relationships are now accessed using explicit reverse descriptor fields (a4b6309)
Upgrade instructions
- Update code that accesses reverse relationships to use the new pattern. For example, if you had
api_key.users.first(), change it to User.query.filter(api_key=api_key).first()
0.19.0 (2025-11-13)
What's changed
- Added
query type annotation using ClassVar for improved type checking support (c3b00a6)
Upgrade instructions
0.18.0 (2025-11-13)
What's changed
- Added type stubs and improved type annotations for model fields using
plain.models.types import pattern (c8f40fc)
Upgrade instructions
0.17.0 (2025-11-12)
What's changed
- Fixed type checker warnings in OpenAPI decorator implementation (f4dbcef)
Upgrade instructions
0.16.3 (2025-11-03)
What's changed
- CLI command docstrings updated to match coding style guidelines (fdb9e80)
- Internal model configuration updated to use
_meta descriptor pattern (c75441e)
Upgrade instructions
0.16.2 (2025-10-31)
What's changed
- Added explicit BSD-3-Clause license metadata to package configuration (8477355)
Upgrade instructions
0.16.1 (2025-10-20)
What's changed
- Internal packaging configuration updated (1b43a3a)
Upgrade instructions
0.16.0 (2025-10-07)
What's changed
- Model configuration changed from
class Meta to model_options = models.Options() descriptor (17a378d)
Upgrade instructions
0.15.2 (2025-10-06)
What's changed
- Added type annotations throughout the package for improved IDE and type checker support (41f6429)
Upgrade instructions
0.15.1 (2025-10-02)
What's changed
- Updates docs references to
request.user
Upgrade instructions
0.15.0 (2025-09-25)
What's changed
- Removed deprecated field types:
NullBooleanField from OpenAPI schema generation (345295d)
Upgrade instructions
- If you were using
NullBooleanField in your API forms, replace it with BooleanField with required=False and/or allow_null=True as appropriate
0.14.0 (2025-09-12)
What's changed
- Model and related manager objects renamed from
objects to query (037a239)
- Minimum Python version updated to 3.13 (d86e307)
Upgrade instructions
0.13.0 (2025-08-19)
What's changed
- API views no longer use
CsrfExemptViewMixin (2a50a91)
- Improved README documentation with better examples and installation instructions (4ebecd1)
Upgrade instructions
0.12.0 (2025-07-22)
What's changed
- The
APIKey model now uses PrimaryKeyField() instead of BigAutoField for the primary key (4b8fa6a)
Upgrade instructions
0.11.0 (2025-07-18)
What's changed
- Migrations have been restarted with all fields consolidated into the initial migration (484f1b6e93)
Upgrade instructions
- Run
plain migrate --prune plainapi to remove old migration records and apply the consolidated migration
0.10.1 (2025-06-24)
What's changed
- Added an initial CHANGELOG for plain-api (documentation only, no functional changes) (82710c3)
Upgrade instructions