Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

Kinto Web Service - Store, Sync, Share, and Self-Host.

Project description

Kinto
=====

|travis| |master-coverage| |readthedocs| |pypi|

.. |travis| image:: https://travis-ci.org/Kinto/kinto.svg?branch=master
:target: https://travis-ci.org/Kinto/kinto

.. |readthedocs| image:: https://readthedocs.org/projects/kinto/badge/?version=latest
:target: http://kinto.readthedocs.org/en/latest/
:alt: Documentation Status

.. |master-coverage| image::
https://coveralls.io/repos/Kinto/kinto/badge.svg?branch=master
:alt: Coverage
:target: https://coveralls.io/r/Kinto/kinto

.. |pypi| image:: https://img.shields.io/pypi/v/kinto.svg
:target: https://pypi.python.org/pypi/kinto


Kinto is a server allowing you to store and synchronize arbitrary data,
attached to your Firefox account.

* `Online documentation <http://kinto.readthedocs.org/en/latest/>`_
* `Tutorial <http://kinto.readthedocs.org/en/latest/tutorials/first-steps.html>`_
* `Issue tracker <https://github.com/Kinto/kinto/issues>`_
* `Contributing <http://kinto.readthedocs.org/en/latest/contributing.html>`_
* `Try our daily flushed instance at: https://kinto.dev.mozaws.net/v1/ <https://kinto.dev.mozaws.net/v1/>`_


Changelog
#########

This document describes changes between each past release.

1.10.0 (2015-12-01)
===================

**Breaking changes**

- When using *cliquet-fxa*, the setting ``multiauth.policy.fxa.use`` must now
be explicitly set to ``cliquet_fxa.authentication.FxAOAuthAuthenticationPolicy``
- Fields in the root view were renamed (mozilla-services/cliquet#600)

**Bug fixes**

- Fix redis default host in kinto init (fixes #289)
- Fix DockerFile with default configuration (fixes #296)
- Include plugins after setting up components (like authn/authz) so that plugins
can register views with permissions checking
- Remove ``__permissions__`` from impacted records values in ``ResourceChanged``
events (mozilla-services/cliquet#586)

**Protocol**

Changed the naming in the root URL (hello view) (mozilla-services/cliquet#600)

- Added ``http_api_version``
- Renamed ``hello`` to ``project_name``
- Renamed ``protocol_version`` to ``cliquet_protocol_version``
- Renamed ``documentation`` to ``project_docs``
- Renamed ``version`` to ``project_version``


**New features**

- New options in configuration of listeners to specify filtered actions and
resource names (mozilla-services/cliquet#492, mozilla-services/cliquet#555)
- Add ability to be notified on read actions on a resource (disabled by
default) (mozilla-services/cliquet#493)

**Internal**

- Clarified how Kinto is versionned in the documentation (#305)

1.9.0 (2015-11-18)
==================

- Upgraded to *Cliquet* 2.11.0

**Breaking changes**

- For PostgreSQL backends, it is recommended to specify ``postgresql://``.

**Protocol**

- In the hello view:

- Add a ``bucket`` attribute in ``user`` mapping allowing clients
to obtain the actual id of their default bucket
- Add the ``protocol_version`` to tell which protocol version is
implemented by the service. (#324)

- ``_since`` and ``_before`` now accepts an integer value between quotes ``"``,
as it would be returned in the ``ETag`` response header.
- A batch request now fails if one of the subrequests fails
(mozilla-services/cliquet#510) (*see new feature about
transactions*)

**New features**

- Add a Kinto command for start and migrate operation. (#129)
- Add a Kinto command to create a configuration file. (#278)
- A transaction now covers the whole request/response cycle (#194).
If an error occurs during the request processing, every operation performed
is rolled back. **Note:** This is only enabled with *PostgreSQL* backends. In
other words, the rollback has no effect on backends like *Redis* or *Memory*.

- New settings for backends when using PostgreSQL: ``*_max_backlog``,
``*_max_overflow``, ``*_pool_recycle``, ``*_pool_timeout`` to
control connections pool behaviour.

**Bug fixes**

- Fix 500 error response (instead of 503) when storage backend fails during
implicit creation of objects on ``default`` bucket. (fixes #236)
- Fixed ``Dockerfile`` for PostgreSQL backends.
- Fix JSON schema crash when no field information is available.

**Internal changes**

- Optimization for obtention of user principals (#263)
- Do not build the Docker container when using Docker Compose.
- Add Python 3.5 on TravisCI
- Add schema validation loadtest (fixes #201)
- Multiple documentation improvements.
- The PostgreSQL backends now use SQLAlchemy sessions.

See also `*Cliquet* changes <https://github.com/mozilla-services/cliquet/releases/2.11.0>`_


1.8.0 (2015-10-30)
==================

- Upgraded to *Cliquet* 2.10.0

**Protocol breaking changes**

- Moved ``userid`` attribute to a dedicated ``user`` mapping in the hello
view (#242).

**New features**

- Follow redirections in batch subrequests (fixes mozilla-services/cliquet#511)
- Set cache headers only when anonymous (fixes mozilla-services/cliquet#449)
- Add a ``readonly`` setting to run the service in read-only mode. (#241)
- If no client cache is set, add ``Cache-Control: no-cache`` by default,
so that clients are forced to revalidate their cache against the server
(ref Kinto/kinto#231)

**Bug fixes**

- Fixed 503 error message to mention backend errors in addition to unavailability.
- When recreating a record that was previously deleted, status code is now ``201``
(ref mozilla-services/cliquet#530).
- Fix PostgreSQL error when deleting an empty collection in a protected
resource (fixes mozilla-services/cliquet#528)
- Fix PUT not using ``create()`` method in storage backend when tombstone exists
(fixes mozilla-services/cliquet#530)
- Delete tombstone when record is re-created (fixes mozilla-services/cliquet#518)
- Fix crash with empty body for PATCH (fixes mozilla-services/cliquet#477,
fixes mozilla-services/cliquet#516)
- Fix english typo in 404 error message (fixes mozilla-services/cliquet#527)


1.7.0 (2015-10-28)
==================

- Upgraded to *Cliquet* 2.9.0
- Update cliquet-fxa configuration example for cliquet-fxa 1.4.0
- Improve the documentation to get started

**New features**

- Added Pyramid events, triggered when the content of a resource has changed. (#488)
- Added ``kinto.includes`` setting allowing loading of plugins once Kinto
is initialized (unlike ``pyramid.includes``). (#504)


**Protocol**

- Remove the broken git revision ``commit`` field in the hello page. (#495).

`Please read the full Cliquet 2.9.0 changelog for more information <https://github.com/mozilla-services/cliquet/releases/tag/2.9.0>`_

1.6.2 (2015-10-22)
==================

**Bug fixes**

- Handle 412 details with default bucket (#226)


1.6.1 (2015-10-22)
==================

- Upgraded to *Cliquet* 2.8.2

**Bug fixes**

- Return a JSON body for 405 response on the default bucket (#214)

**Internal changes**

- Improve documentation for new comers (#217)
- Do not force host in default configuration (#219)
- Use tox installed in virtualenv (#221)
- Skip python versions unavailable in tox (#222)


1.6.0 (2015-10-14)
==================

- Upgraded to *Cliquet* 2.8.1

**Breaking changes**

- Settings prefixed with ``cliquet.`` are now deprecated, and should be replaced
with non prefixed version instead.
- In the root url response, public settings are exposed without prefix too
(e.g. ``batch_max_requests``).


1.5.1 (2015-10-07)
==================

- Upgraded to *Cliquet* 2.7.0


1.5.0 (2015-09-23)
==================

- Add Disqus comments to documentation (fixes #159)

**New features**

- Allow POST to create buckets (fixes #64)
- Control client cache headers from settings or collection objects (#189)

**Internal changes**

- Remove dead code (#187, ref #53)
- Add pytest-capturelog for better output on test failures (#191)
- Install cliquet middleware (*no-op if disabled*) (#193)
- Many optimizations on ``default`` bucket (#192, #197)
- Many optimizations on number of storage hits (#203)
- Fix contributing docs about tests (#198)
- Added more batched actions to loadtests (#199)


1.4.0 (2015-09-04)
==================

**New features**

- Partial collection of records when user has no ``read`` permission on collection (fixes #76).
Alice can now obtain a list of Bob records on which she has individual ``read`` permission!
- Collection can now specify a JSON schema and validate its records (#31).
The feature is marked as *experimental* and should be explicitly enabled
from settings (#181)
- Accept empty payload on buckets and collections creation (#63)
- Allow underscores in Kinto bucket and collection names (#153, fixes #77)
- Collection records can now be filtered using multiple values (``?in_status=1,2,3``) (mozilla-services/cliquet#39)
- Collection records can now be filtered excluding multiple values (``?exclude_status=1,2,3``) (mozilla-services/readinglist#68)
- Current userid is now provided when requesting the hello endpoint with an ``Authorization``
header (mozilla-services/cliquet#319)
- UUID validation now accepts any kind of UUID, not just v4 (mozilla-services/cliquet#387)
- Querystring parameter ``_to`` on collection records was renamed to ``_before`` (*the former is now
deprecated*) (mozilla-services/cliquet#391)
- Allow to configure info link in error responses with ``cliquet.error_info_link``
setting (mozilla-services/cliquet#395)

**Bug fixes**

- Fix consistency in API to modify permissions with PATCH (fixes #155)
The list of principals for each specified permission is now replaced by the one
provided.
- Use correct HTTP Headers encoding in both Python2 and Python3 (#141)
- ETag is now returned on every verb (fixes #110)

**Internal changes**

- When deleting a collection also remove the records tombstones (#136)
- Complete revamp of the documentation (#156 #167 #168 #169 #170)
- Upgraded to *Cliquet* 2.6.0


1.3.1 (2015-07-15)
==================

- Upgraded to *Cliquet* 2.3.1

**Bug fixes**

- Make sure the default route only catch /buckets/default and
/buckets/default/* routes. (#131)


1.3.0 (2015-07-13)
==================

- Upgraded to *Cliquet* 2.3.0

**Bug fixes**

- Handle CORS with the default bucket. (#126, #135)
- Add a test to make sure the tutorial works. (#118)

**Internal changes**

- List StatsD counters and timers in documentation (fixes #73)
- Update virtualenv dependencies on setup.py modification (fixes #130)


1.2.1 (2015-07-08)
==================

- Upgraded to *Cliquet* 2.2.1

**Bug fixes**

- Improvements and fixes in the tutorial (#107)
- Querystring handling when using the personal bucket (#119)
- Default buckets ID is now a UUID with dashes (#120)
- Handle unknown permission and fix crash on /buckets (#88)
- Fix permissions handling on PATCH /resource (mozilla-services/cliquet#358)

**Internal changes**

- Test with the normal Kinto authentication policy and remove the fake one (#121)


1.2.0 (2015-07-03)
==================

- Upgraded to *Cliquet* 2.2.+

**New features**

- Add the personal bucket ``/buckets/default``, where collections are created
implicitly (#71)
- *Kinto* now uses the memory backend by default, which simplifies its usage
for development (#86, #95)
- Add public settings in hello view (mozilla-services/cliquet#318)

**Bug fixes**

- Fix Docker compose file settings (#100)
- Fix version redirection behaviour for unsupported versions (mozilla-services/cliquet#341)
- Fix overriding backend settings in .ini (mozilla-services/cliquet#343)

**Internal changes**

- Documentation improvements (#75)
- Added tutorial (#79)
- Remove hard dependency on *PostgreSQL* (#100)
- Add pytest-cache (#98)
- Add Pypy test on Travis (#99)
- Update dependencies on ``make install`` (#97)
- Fix URL of readthedocs.org (#90)


1.1.0 (2015-06-29)
==================

**New features**

- Polish default kinto configuration and default to memory backend. (#81)
- Add the kinto group finder (#78)
- Flush endpoint now returns 404 is disabled (instead of 405) (#82)


**Bug fixes**

- ETag not updated on collection update (#80)


**Internal changes**

- Use py.test to run tests instead of nose (#85)


1.0.0 (2015-06-17)
==================

**New features**

- Added notion of buckets, user groups and collections (#48, #58)
- Buckets, collections and records can now have permissions (#59)

**Breaking changes**

- Updated *Cliquet* to 2.0, which introduces a lot of breaking changes
(`see changelog <https://github.com/mozilla-services/cliquet/releases/2.0.0>`_)
- Firefox Accounts is not a dependency anymore and should be installed and
included explictly using the python package ``cliquet-fxa``
(`see documentation <https://github.com/mozilla-services/cliquet-fxa/>`_)
- API is now served under ``/v1``
- Collections are now managed by bucket, and not by user anymore (#44)

.. note::

A list of records cannot be manipulated until its parents objects (bucket and
collection) are created.

Settings

- ``cliquet.permission_backend`` and ``cliquet.permission_url`` are now configured
to use PostgreSQL instead of *Redis* (see default :file:`config/kinto.ini`)
- ``cliquet.basic_auth_enabled`` is now deprecated (`see *Cliquet*
docs to enable authentication backends
<http://cliquet.readthedocs.org/en/latest/reference/configuration.html#basic-auth>`_)


**Internal changes**

- Added documentation about deployment and data durability (#50)
- Added load tests (#30)
- Several improvements in documentation (#51)


0.2.2 (2015-06-04)
==================

- Upgraded to *cliquet* 1.8.+

**Breaking changes**

- PostgreSQL database initialization process is not run automatically in
production. Add this command to deployment procedure:

::

cliquet --ini config/kinto.ini migrate

**Internal changes**

- Improved documentation (#29)
- Require 100% coverage during tests (#27)
- Basic Auth is now enabled by default in example config


0.2.1 (2015-03-25)
==================

- Upgraded to *cliquet* 1.4.1

**Bug fixes**

- Rely on Pyramid API to build pagination Next-Url (#147)


0.2 (2015-03-24)
================

- Upgraded to *cliquet* 1.4

**Bug fixes**

- Fix behaviour of CloudStorage with backslashes in querystring (mozilla-services/cliquet#142)
- Force PostgreSQl session timezone to UTC (mozilla-services/cliquet#122)
- Fix basic auth ofuscation and prefix (mozilla-services/cliquet#128)
- Make sure the `paginate_by` setting overrides the passed `limit`
argument (mozilla-services/cliquet#129)
- Fix crash of classic logger with unicode (mozilla-services/cliquet#142)
- Fix crash of CloudStorage backend when remote returns 500 (mozilla-services/cliquet#142)
- Fix python3.4 segmentation fault (mozilla-services/cliquet#142)
- Add missing port in Next-Page header (mozilla-services/cliquet#147)


0.1 (2015-03-20)
================

**Initial version**

- Schemaless storage of records
- Firefox Account authentication
- Kinto as a storage backend for *cliquet* applications


Contributors
============

* Alexis Metaireau <alexis@mozilla.com>
* Andy McKay <amckay@mozilla.com>
* Dan Phrawzty <phrawzty+github@gmail.com>
* Fil <fil@rezo.net>
* Greeshma <https://github.com/greeshmab>
* Mathieu Agopian <mathieu@agopian.info>
* Mathieu Leplatre <mathieu@mozilla.com>
* Nicolas Perriault <nperriault@mozilla.com>
* Rémy Hubscher <rhubscher@mozilla.com>
* Shweta Oak <oakshweta11@gmail.com>
* Sofia Utsch <sofia.utsch@gmail.com>
* Tarek Ziade <tarek@mozilla.com>

Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
kinto-1.10.0-py2.py3-none-any.whl (42.2 kB) Copy SHA256 hash SHA256 Wheel py2.py3
kinto-1.10.0.tar.gz (32.9 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page